OpenSSL对称密钥与.NET对称密钥 - 不匹配

时间:2016-04-10 15:02:05

标签: c# .net encryption openssl cryptography

我尝试使用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 =

0 个答案:

没有答案