我使用openssl命令创建一个带有椭圆曲线secp384r1的CSR和使用算法sha384签名的哈希:
openssl ecparam -out ec_client_key.pem -name secp384r1 -genkey
openssl req -new -key ec_client_key.pem -out ec_clientReq.pem
然后我用这个命令以可读格式显示CSR:
openssl req -in ec_clientReq.pem -noout -text
在CSR的签名部分,我得到了这个:
Run Code Online (Sandbox Code Playgroud)Signature Algorithm: ecdsa-with-SHA1 30:64:02:30:06:a1:f2:5e:1b:34:18:b9:f3:7c:e9:52:c8:78: 99:90:63:d2:1e:d2:f5:7a:25:f3:d6:4d:6d:90:d0:bf:25:45: 15:ad:aa:17:34:ad:1a:b9:1e:67:2b:cf:d7:a6:9b:e5:02:30: 31:fe:76:37:4b:11:3a:e7:2d:63:52:bb:18:2f:8e:43:a7:bb: 65:74:38:a4:92:38:9d:eb:ec:22:8f:77:f3:e4:5f:47:2d:f8: 2a:9b:e1:2c:ba:a7:b0:e6:c2:54:8d:0e
为了获得签名算法"ecdsa-with-SHA384"而不是"ecdsa-with-SHA1",我该怎么办?我在这个过程中遗漏了什么吗?我试图在第二个命令中使用-sha384
openssl req -new -key ec_client_key.pem -out ec_clientReq.pem -sha384
但我得到了与签名算法相同的结果
Run Code Online (Sandbox Code Playgroud)Signature Algorithm: ecdsa-with-SHA1 30:65:02:30:4e:b4:b6:5f:3a:fc:b7:28:e5:4b:f0:3d:9a:ea: 4a:ba:ce:a4:f1:a6:e8:cd:15:19:23:a6:81:3f:24:01:d7:81: 3c:9d:9a:4c:cd:4b:4a:12:6d:69:48:ec:7e:73:7d:73:02:31: 00:d7:a5:63:9b:21:b2:95:ce:7f:13:3f:c5:1a:ac:99:01:ff: ba:9c:59:93:d5:ee:97:03:b5:9e:c1:7d:03:f8:72:90:65:b5: 08:7c:79:ae:ea:4f:6e:b0:2b:55:1a:11:a5
另一个问题涉及签名的格式.在上面的例子中,一个是102字节长,第二个是103字节长.似乎第一个字节是包含类型,长度的标题,可能还有其他一些内容,如填充.但我找不到一个确切的定义.有些人可以对此有所了解吗?谢谢
是否可以使用IPSEC(用于身份验证和加密)在LAN中的计算机(Windows 7)之间传输数据但是没有VPN?如果有,怎么样?我发现的与可能解决方案相关的所有信息都包括VPN.
假设在Linux中使用crypt() C函数对明文密码进行了加密。原型:
char *crypt(const char *key, const char *salt);
Run Code Online (Sandbox Code Playgroud)
使用MD5方法的示例(salt参数开头的“ $ 1 $”):
char *clear_password = ...
char *encrypted_password = crypt(clear_password, "#$1$FedCBa$")
Run Code Online (Sandbox Code Playgroud)
问题: 解密加密密码并取回明确密码的代码是什么?
PS该示例涉及MD5方法,但问题更笼统,涉及crypt()函数使用的任何方法(MD5,Blowfish,SHA-256等)。