我们正在使用带有TripleDesImplementation
算法加密的 ASP.NET Core。
解密代码如下:
public static string Encrypt(string p_szStrValue)
{
string vszEncryptedString = string.Empty;
if (!p_szStrValue.Trim().Equals(string.Empty))
{
TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_192, IV_192), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(p_szStrValue);
sw.Flush();
cs.FlushFinalBlock();
ms.Flush();
vszEncryptedString = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
return vszEncryptedString;
}
public static string Decrypt(string p_szStrValue)
{
string vszDecryptedString = string.Empty;
if (!p_szStrValue.Trim().Equals(string.Empty))
{
try
{
TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
byte[] v_Buffer = Convert.FromBase64String(p_szStrValue);
MemoryStream ms = new MemoryStream(v_Buffer);
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_192, IV_192), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
vszDecryptedString = sr.ReadToEnd();
}
catch (Exception e)
{
return e.Message;
}
}
return vszDecryptedString;
}
但是在解密时,它会抛出如下错误:
指定的初始化向量 (IV) 与此算法的块大小不匹配。
参数名称:rgbIV
它在一个普通的 Asp.Net 网站上工作,但现在它抛出了一个错误。