private static string _text;
        /// <summary>
        /// 要加解密的字符串
        /// </summary>
        public static string Text
        {
            set { CryptoString1._text = value; }
        }
        private static string _key = "langweix";
        /// <summary>
        /// 加密的密钥
        /// </summary>
        public static string Key
        {
            set { CryptoString1._key = value; }
        }
        /// <summary>
        /// DES加密
        /// </summary>
        /// <returns></returns>
        public static string DESEncrypt0String()
        {
            //将密钥Key转换为字节数组
            byte[] iKey = Encoding.Default.GetBytes(_key);
            //将传递的字符创转化为字节数组
            byte[] iText = Encoding.Default.GetBytes(_text);
            //创建一个内存流
            MemoryStream ms = new MemoryStream();
            //创建一个加密对象实例
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            des.Key = iKey;
            des.Mode = CipherMode.ECB;//选择加密模式为ECB模式
            des.Padding = PaddingMode.PKCS7;
            //使用密钥Key创建一个加密流
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
            //将字节数组写入加密流并清空缓冲区
            cs.Write(iText, 0, iText.Length);
            cs.FlushFinalBlock();
            //得到加密后的字节数组
            byte[] EncryptString = ms.ToArray();
            //将加密后的字节数组转化为字符串并返回
            return Convert.ToBase64String(EncryptString);
        }        /// <summary>
        /// DES解密
        /// </summary>
        /// <returns></returns>
        public static string DESDecryptoString()
        {
            //将密钥Key转换为字节数组
            byte[] iKey = Encoding.Default.GetBytes(_key);
            //将待解密的字符串转化为字节数组
            byte[] iText = Encoding.Default.GetBytes(_text);
            //创建一个内存流
            MemoryStream ms = new MemoryStream();
            //创建一个加密对象实例
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            des.Key = iKey;
            des.Mode = CipherMode.ECB;
            des.Padding = PaddingMode.PKCS7;
            //使用密钥创建一个解密流
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            //将字节数组写入解密流
            cs.Write(iText, 0, iText.Length);
            //cs.FlushFinalBlock();
            //得到解密后的字节数组
            byte[] DecryptString = ms.ToArray();
            //将解密后的字节数组转化为字符串并返回
            return Convert.ToBase64String(DecryptString);
        }
我纠结了~~~~
我这个用的是ECB模式的加解密、
只要Key就行。和CBC模式不同。CBC模式需要key和初始化向量IV
我这个用的是ECB模式的加解密、
只要Key就行。和CBC模式不同。CBC模式需要key和初始化向量IV
但是我这样写加密完解密出来的数据不正确……而且我现在只能用这种加密方式。~!要不谁给我发个RSA加解密的列子也行。

解决方案 »

  1.   

            /// <summary>
            /// DES加密字符串 
            /// </summary>
            /// <param name="sInputString">将要加密的String</param>
            /// <param name="sKey">密钥</param>
            /// <returns>加密后的字符串</returns>
            public string EncryptString(string sInputString, string sKey)
            {
                byte[] data = Encoding.UTF8.GetBytes(sInputString);
                DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
                DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                ICryptoTransform desencrypt = DES.CreateEncryptor();
                byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                return BitConverter.ToString(result);
            }
           
            /// <summary>
            /// DES解密字符串
            /// </summary>
            /// <param name="sInputString">将要解密的String</param>
            /// <param name="sKey">密钥</param>
            /// <returns>解密后的字符串</returns>
            public string DecryptString(string sInputString, string sKey)
            {
                string[] sInput = sInputString.Split("-".ToCharArray());
                byte[] data = new byte[sInput.Length];
                for (int i = 0; i < sInput.Length; i++)
                {
                    data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
                }
                DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
                DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                ICryptoTransform desencrypt = DES.CreateDecryptor();
                byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                return Encoding.UTF8.GetString(result);
            }
      

  2.   

    格式转换的问题吧 不要用BASE64么