我試圖解密一個AES256位,但它給了我這個錯誤「解密數據的長度是無效的。」在線Plain_Text = Stream_Read.ReadToEnd();
。我的加密方法有效,但解密不能。有人能幫助我嗎?謝謝。AES 256解密錯誤
private static string Decrypt(string stringCypher_Text, string stringKey, string stringIV)
{
//Hashes, and converts key to bytes
//hash
//convert
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
Byte[] Key = encoding.GetBytes(stringKey);
//converts string IV to bytes
Byte[] IV = encoding.GetBytes(stringIV);
//converts cypher string to bytes
Byte[] Cypher_Text = encoding.GetBytes(stringCypher_Text);
RijndaelManaged Crypto = null;
MemoryStream MemStream = null;
ICryptoTransform Decryptor = null;
CryptoStream Crypto_Stream = null;
StreamReader Stream_Read = null;
string Plain_Text;
try
{
Crypto = new RijndaelManaged();
Crypto.Key = Key;
Crypto.IV = IV;
MemStream = new MemoryStream(Cypher_Text);
//Create Decryptor make sure if you are decrypting that this is here and you did not copy paste encryptor.
Decryptor = Crypto.CreateDecryptor(Crypto.Key, Crypto.IV);
//This is different from the encryption look at the mode make sure you are reading from the stream.
Crypto_Stream = new CryptoStream(MemStream, Decryptor, CryptoStreamMode.Read);
//I used the stream reader here because the ReadToEnd method is easy and because it return a string, also easy.
Stream_Read = new StreamReader(Crypto_Stream);
Plain_Text = Stream_Read.ReadToEnd();
}
finally
{
if (Crypto != null)
Crypto.Clear();
MemStream.Flush();
MemStream.Close();
}
return Plain_Text;
}
您可以發佈您的加密方法,以便更容易排除故障嗎? – Kevin