.Net使用DES解密发生“数据不正确”的错误

发生这种错误,一般是由于加密阶段,没有将密文的流数据完整输出,如果沿着解密的方向排查错误,多半是出错了,举例如下
    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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值