要求:
加密前的字符串为8位,如:"hdfy0987"
加密后的字符串仍为8位;解密后的字符串仍然为:"hdfy0987"谢谢!

解决方案 »

  1.   

    http://www.cnblogs.com/weekzero/archive/2007/12/05/983143.html/// <summary>
            /// 进行DES加密。
            /// </summary>
            /// <param name="pToEncrypt">要加密的字符串。</param>
            /// <param name="sKey">密钥,且必须为8位。</param>
            /// <returns>以Base64格式返回的加密字符串。</returns>
            public string Encrypt(string pToEncrypt, string sKey)
            {
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
                    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                    System.IO.MemoryStream ms = new System.IO.MemoryStream();
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                    string str = Convert.ToBase64String(ms.ToArray());
                    ms.Close();
                    return str;
                }
            }        /**//// <summary>
            /// 进行DES解密。
            /// </summary>
            /// <param name="pToDecrypt">要解密的以Base64</param>
            /// <param name="sKey">密钥,且必须为8位。</param>
            /// <returns>已解密的字符串。</returns>
            public string Decrypt(string pToDecrypt, string sKey)
            {
                byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                    System.IO.MemoryStream ms = new System.IO.MemoryStream();
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                    }
                    string str = Encoding.UTF8.GetString(ms.ToArray());
                    ms.Close();
                    return str;
                }
            } //调用
    string str = "hdfy0987";
    string code = Encrypt(str,"88888888");//加密
    string newstr = Decrypt(code,"88888888");//还原
      

  2.   

    DESCryptoServiceProvider des = new DESCryptoServiceProvider()
    这个对象的要求吧,你可以查下
      

  3.   

    查了一下貌似是的,有这么句话:
    于数据加密标准 (DES) 将等于 8 个字节或 8 个字符的 64 位密钥。
    8位就8位吧,不纠结这个问题了~
      

  4.   

    Des是私钥加密的。这个是用于双方约定了一个私钥进行加密的。如果要多位的对称加密。可以用128位分组对称加密算法:AES 
      

  5.   

    c#下256位密码的AES加解密函数原型C#中使用DES和AES加密解密
      

  6.   

    加密解密方法很多如des,sha,rsa等
    主要是密钥
    http://topic.csdn.net/u/20090110/13/e28ea3f1-ff3a-4cc9-84b6-18e4e426b46f.html