Jak*_*urc 4 .net openssl 3des pkcs#5
我的.Net应用程序需要与基于Linux的系统进行通信,该系统使用以下命令行来加密其消息:
openssl enc -a -e -salt -des3 -pass pass:abc123
Run Code Online (Sandbox Code Playgroud)
如何在c#中加密/解密消息的等效代码如何?
我知道我应该在CBC模式下使用TripleDES和PKCS7填充.我不知道的是我应该使用什么块大小和初始化向量(IV).
另外我很困惑如何从密码中获取密钥.我应该使用PBKDF1或PBKDF2,我应该使用什么盐?
所以看起来很标准的工作对我来说就是彻夜难关.有谁能够帮我?
所以这是诀窍:
> openssl enc -a -e -salt -des3 -P -pass pass:abc123
salt=17685C0658F85BA4
key=1CB6E5A0AA4953EC2323CBA021EF008C9193F5F29990DE87
iv =9148EB5B2BF2E9B2
Run Code Online (Sandbox Code Playgroud)
如果我输入TripleDES算法,输出几乎与openssl输出相同.只有差异是在openssl输出开始时额外的16个字节.这些字节的前八个是"Salted__"文本,第二个八个是salt.
盐是随机的.那么我应该如何从密码和盐中获取密钥和iv?PBKDF1和PBKDF2不符合资格.
所以这是第二招:
A = MD5(pwd + SALT)
B = MD5(A + PWD + SALT)
KEY + IV = A + B
Run Code Online (Sandbox Code Playgroud)
加号表示串联,键长24个字节,IV长8个字节.
我从Deusty博客那里学到了这些技巧,他用AES做了类似的事情.