我尝试使用OpenSSL加密字符串,然后将该简单字符串传递给C#应用程序进行解密。问题是我不能使用共享私有"明文"密码,因为私钥不会生成相同的密码。如果我使用我的c#生成密钥作为-K十六进制密钥,那么它解密就好了。
我觉得密码没有在c#CryptDeriveKey
和OpenSSL PKCS#5 padding
之间转换为相同的密钥。
同样,如果我在OpenSSL -K中使用c#over的十六进制密钥,它会正确加密并正确解密。
我见过人们在C#中使用OpenSSL库的例子。 .NET System.Security.Cryptography
与OpenSSL不完全兼容吗?
C:\OpenSSL-Win32\bin>echo test|openssl enc -des-ede3 -e -nosalt -md
sha1 -base64 -pass pass:MyTestKey -iv 0 -p
键= E76B45CFD69213824DC968FCC31E39285BAA8A11DD8395DE
加密:3IFZ8w6kLa0 =
// ** code simplified so its compacted (wont build)...
var tdes = new TripleDESCryptoServiceProvider();
tdes.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
tdes.Mode = "ECB";
tdes.Padding = "PKCS7";
var pdb = new PasswordDeriveBytes("MyTestKey", null);
tdes.Key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, 0);
键:B5E67ADF58435DBA0D67CDC49410E6BA2004DA2F97432F76
加密:i + fxaM3 / KAg =