你用DES算法,给出的key长度不够。

解决方案 »

  1.   

    楼上的,那是肯定不行的,因为DES只支持8个字节长度的Key。
      

  2.   

    我碰到过这个问题.你把那个KEY改成4位的就成了.不信可以试试,呵呵
      

  3.   

    把代码贴出来看看
    这是我的信箱
    [email protected]
      

  4.   

    你在调用CreateEncryptor方法的那句的前面,加上一句测试一下:
    Console.WriteLine(Key.Length);
    Console.WriteLine(Iv.Length);
    如果不是8就是这个错了。微软必须是8,否则报错。
      

  5.   

    Byte[] arrDESKey,arrDESIV,arrInput;
    System.IO.FileStream objFileStream;
    DESCryptoServiceProvider objDES;
    ICryptoTransform objEncryptor;
    CryptoStream objCryptoStream;string DESKey="ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH";
    string DESIV="ABCDABCD";arrDESKey = Convert2ByteArray(DESKey);
    arrDESIV = Convert2ByteArray(DESIV);
    arrInput = Convert2ByteArray("mytest");
    objDES = new DESCryptoServiceProvider();MessageBox.Show(objDES.IV.Length.ToString()); //为8
    MessageBox.Show(arrDESIV.Length.ToString()); //还是8objDES.Key  =  arrDESKey;
    objDES.IV  =  arrDESIV;// //出错了!....附:
    private byte[] Convert2ByteArray(string strInput)
    {
    char[] arrChar; arrChar = strInput.ToCharArray();
    byte[] arrByte = new byte[arrChar.Length];
    for(int i=0; i<arrByte.Length; i++)
    arrByte[i] = Convert.ToByte(arrChar[i]); return arrByte;
    }
      

  6.   

    chenxy2002((HomeMan) ,我换成了4个字符的也还是不对,报一样的错误 :(
      

  7.   

    string DESKey="ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH";
    string DESIV="ABCDABCD";
    你的代码中一个字符作为一个字节,这样的话,密钥只能有8个字符,但是你的有64个字符,也就是64个字节,也就是64 * 8 = 512位,但DES只能是64位,这个位是指二进制位。