解密过程中常见的错误是"填充无效且无法删除"。
如果我正在尝试调试发送方使用的模式的填充,如何访问最后一个块的内容(包括无效的填充)?
请参阅下面AesManaged的MSDN示例的略微修改版本:
using ( MemoryStream msDecrypt = new MemoryStream( cipherText ) )
{
using ( CryptoStream csDecrypt = new CryptoStream( msDecrypt, decryptor, CryptoStreamMode.Read ) )
{
using ( StreamReader srDecrypt = new StreamReader( csDecrypt ) )
{
try
{
plaintext = srDecrypt.ReadToEnd();
}
catch ( CryptographicException )
{
// ???
}
}
}
}
答案 0 :(得分:2)
使用填充模式解密(在AesManaged
之前CreateDecryptor()
上设置)