我在 C# 中使用这样的加密:
// Step 1. We hash the passphrase using MD5
// We use the MD5 hash generator as the result is a 128 bit byte array
// which is a valid length for the TripleDES encoder we use below
var utf8 = new UTF8Encoding();
var hashProvider = new MD5CryptoServiceProvider();
var tdesKey = hashProvider.ComputeHash(utf8.GetBytes(passwordPhrase));
// Step 2. Create a new TripleDESCryptoServiceProvider object
var tdesAlgorithm = new TripleDESCryptoServiceProvider
{
Key = tdesKey,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
// Step 3. Attempt to encrypt the string
var dataToEncrypt = utf8.GetBytes(message);
var encryptor = tdesAlgorithm.CreateEncryptor();
return Convert.ToBase64String(
encryptor.TransformFinalBlock(
dataToEncrypt, 0, dataToEncrypt.Length));
我想在 SQL Server 中使用相同的过程。所以我的意思是来自 C# 代码的加密消息和来自 SQL Server 的加密消息必须是相同的字符串。
例如,在 SQL Server 中683846
也会变成fN8r09iDu4c=
。
我怎样才能做到这一点?