发生这种错误,一般是由于加密阶段,没有将密文的流数据完整输出,如果沿着解密的方向排查错误,多半是出错了,举例如下
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cryStream
= new CryptoStream(ms, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Write))
{
cryStream.Write(source, 0, source.Length);
byte[] result = ms.ToArray();
return result;
} 上述代码,执行ms.ToArray()时,很大的几率,输出的密文字节数组是不完整的,就是说cryStream没有将所有数据写入ms。所以在ms.ToArray之前,调用
ms.Close(), 或是将 CryptoStream的对象再嵌套一个using,如下
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cryStream
= new CryptoStream(ms, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Write))
{
cryStream.Write(source, 0, source.Length);
}
byte[] result = ms.ToArray();
return result;
}
加密流程中密文不完整问题

最低0.47元/天 解锁文章
1190

被折叠的 条评论
为什么被折叠?



