数据库的一个字段为binary,用于存储des加密后的字节数组
数据库对一般的字节数组写入,读出没问题,
但是对于加密后的字节数组,从数据库读出后解密会出现无效的数据格式的异常。
(加密算法是对的,在没有数据库操作的时候验证过)
怀疑是编码问题,我用的是default编码。
望高手指点。

解决方案 »

  1.   

    没遇到过,
    你试试用des加密一个字符串再解密,看是否能解,
      

  2.   

    我一般把加密后的结果再转换成base64格式,这样就不会有字符编码的问题了
    解密时先把base64转换成字节数组
      

  3.   


       using System;
      using System.Text;
      using System.Security.Cryptography;
      class dsacrypto_SignData {
      public static void Main(String[] args){
      //先要将字符串转换为字节数组,这与编码有关。
      String str = "this is a test.";
      byte[] bytes = Encoding.ASCII.GetBytes(str);
      //选择签名方式,有RSA和DSA
      DSACryptoServiceProvider dsac = new DSACryptoServiceProvider();
      byte[] sign = dsac.SignData(bytes);
      //sign便是出来的签名结果。  //下面是认证了
      DSACryptoServiceProvider dsac2 = new DSACryptoServiceProvider();
      dsac2.FromXmlString(dsac.ToXmlString(false));
      bool ver = dsac2.VerifyData(bytes, sign);
      if (ver) {
      Console.WriteLine("通过");
      } else {
      Console.WriteLine("不能通过");
      }
      }
      }