程序根本不对,你这一步 CryptoStream cs = new CryptoStream(ms,des.CreateEncryptordes.Key,des.IV),CryptoStreamMode.Write);
过后,我调试的时候根本没有内容。你要加密的内容在那里啊???

解决方案 »

  1.   

    我改了一下你的代码,你测试以下。DES des = new DESCryptoServiceProvider();

    string key="1977";
    string iv="1809";
    byte[] deskey=Encoding.Unicode.GetBytes(key);
    byte[] desIV=Encoding.Unicode.GetBytes(iv);
    byte[] plainBytes = new byte[100]; for (int i=0; i<plainBytes.Length; i++)
    plainBytes[i] = 215; //这里是初始化数组

    MemoryStream ms = new MemoryStream(plainBytes); // 这里很关键,创建内存流,要代上你要加密的内容plainBytes

    CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(des.Key,des.IV),CryptoStreamMode.Write); cs.Write(plainBytes, 0, plainBytes.Length);

    // 输出加密后结果
    enc_text.Text = Encoding.ASCII.GetString(plainBytes);
      

  2.   

    有这样几个问题:
    1. 你的plainBytes数组没有初始化,这是你要加密的原始内容。(key和iv只是算法初始化用的)。
    2. MemoryStream要指定初始容量:
       MemoryStream ms = new MemoryStream(plainBytes.Length);
    3. 加密的结果存在MemoryStream里,而不是plaiBytes里面。
       byte[] result = ms.ToArray();
    2. 加密之后的Stream包含的是Bytes,不保证一定是可显示的ASCII字符,使用ASCII编码不正确。
       可以使用BASE64编码:
       System.Convert.ToBase64String(result);   qqchen79
       [MS MVP]