Encryption 填充无效,无法在使用c管理的AES中删除#
我正在传递一个64字节的数组数据和32字节的密钥。我最终得到了这个错误。谁能给我一个正确的方法。我试过改变填充参数,块大小。结果还是犯了同样的错误。提前谢谢! 这是密码Encryption 填充无效,无法在使用c管理的AES中删除#,encryption,cryptography,aes,padding,pkcs#7,Encryption,Cryptography,Aes,Padding,Pkcs#7,我正在传递一个64字节的数组数据和32字节的密钥。我最终得到了这个错误。谁能给我一个正确的方法。我试过改变填充参数,块大小。结果还是犯了同样的错误。提前谢谢! 这是密码 public static string DecryptBySymmetricKey(string encryptedText, byte[] key) { //Decrypting SEK try {
public static string DecryptBySymmetricKey(string encryptedText, byte[] key)
{ //Decrypting SEK
try
{
byte[] dataToDecrypt = Encoding.ASCII.GetBytes(encryptedText);
var keyBytes = key;
AesManaged tdes = new AesManaged();
tdes.KeySize = 256;
tdes.BlockSize = 128;
tdes.Key = keyBytes;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
//tdes.Padding = PaddingMode.Zeros;
ICryptoTransform decrypt__1 = tdes.CreateDecryptor();
byte[] deCipher = decrypt__1.TransformFinalBlock(dataToDecrypt, 0, dataToDecrypt.Length);
tdes.Clear();
string EK_result = Convert.ToBase64String(deCipher);
return EK_result;
}
catch (Exception ex)
{
throw ex;
}
}
请发布加密代码,以了解加密后的最终输出以及格式。正如我从您的代码编码中看到的.ASCII.GetBytes(encryptedText);使用文本编码将加密数据转换为字符串是不安全的,您可能会丢失一些数据。作为字节数组或使用base64进行编码和解码更好。