语境:
- 数据存储在 SQL Server 中。某些字段使用 EncryptWithPassPhrase 加密
update my_table set my_field = EncryptByPassPhrase('012345678901234567890123','some value')
使用 NHibernate 获取数据。使用 Interceptor 解码加密数据
public static string Decrypt(byte[] toDecryptArray, string key) { byte[] keyArray; keyArray = UTF8Encoding.UTF8.GetBytes(key); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); }
它无法cTransform.TransformFinalBlock
说“要解密的数据长度无效”。
我的代码有什么问题?数据使用相同的密钥 ( 012345678901234567980123
) 加密/解密。