C#2008'Bad Data'使用DES3解密郵件時
我正在使用以下代碼來加密和加密郵件。但是,當我嘗試解密時,出現「錯誤數據」錯誤。
我的代碼下面有什麼問題嗎?
非常感謝,
public string encryptText(string text)
{
try
{
TripleDESCryptoServiceProvider encrypt = new TripleDESCryptoServiceProvider();
encrypt.Key = new byte[] { 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 144, 89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 0 };
encrypt.IV = new byte[] { 1, 2, 3, 5, 8, 13, 21, 34 };
byte[] byteText = Encoding.Unicode.GetBytes(text);
ICryptoTransform encryptor = encrypt.CreateEncryptor();
byte[] encryptedText = encryptor.TransformFinalBlock(byteText, 0, byteText.Length);
return Encoding.Unicode.GetString(encryptedText);
}
catch (Exception ex)
{
Console.Write(ex.Message);
return ex.Message;
}
}
/// Decrypt the text
public string decryptText(string encryptedText)
{
try
{
byte[] bytesText = Encoding.Unicode.GetBytes(encryptedText);
TripleDESCryptoServiceProvider decrypt = new TripleDESCryptoServiceProvider();
decrypt.Key = new byte[] { 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 144, 89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 0 };
decrypt.IV = new byte[] { 1, 2, 3, 5, 8, 13, 21, 34 };
ICryptoTransform decryptor = decrypt.CreateDecryptor();
byte[] originalText = decryptor.TransformFinalBlock(bytesText, 0, encryptedText.Length);
return Encoding.Unicode.GetString(originalText);
}
catch (Exception ex)
{
Console.Write(ex.Message);
return ex.Message;
}
}
因此,假設`stringToDecrypt`是使用`Convert.ToBase64String`創建的,這是一種可接受的解密方法嗎? `inputByteArray = Convert.FromBase64String(_decodedString); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms,des.CreateDecryptor(key,IV),CryptoStreamMode.Write); cs.Write(inputByteArray,0,inputByteArray.Length); cs.FlushFinalBlock(); System.Text.Encoding encoding = new System.Text.UTF8Encoding();返回encoding.GetString(ms.ToArray());`[許多道歉的格式..我似乎無法設置換行符] – TimDog 2011-10-04 20:47:49
@TimDog:是的,雖然我會用`Encoding.UTF8`而不是調用構造函數。 – 2011-10-04 20:51:19