c# Des 加密和解密算法

 private void desTest()
        {
            //明文
            string val = "中国人民科";
            Console.WriteLine(val + ",长度:" + val.Length);
            //密文
            string encrypt = DESHelper.DesEncrypt(val);
            Console.WriteLine(encrypt + ",长度:" + encrypt.Length);
            //byte[]转换成16进制
            byte[] arr = Encoding.ASCII.GetBytes(encrypt);
            StringBuilder buider = new StringBuilder();
            for (int index = 0; index < arr.Length; index++)
            {
                buider.Append(Convert.ToString(arr[index], 16));
            }


            string hexStr = buider.ToString();
            Console.WriteLine(hexStr + ",长度:" + hexStr.Length);


            //十六进制转换byte[]
            int len = hexStr.Length / 2;
            byte[] data = new byte[len];
            string tmp = string.Empty;
            for (int index = 0; index < len; index++)
            {
                tmp = hexStr.Substring(index * 2, 2);
                data[index] = Convert.ToByte(tmp, 16);
            }


            //byte[] 转换成 字符串
            string encrypt1 = Encoding.UTF8.GetString(data);
            Console.WriteLine(encrypt1 + ",长度:" + encrypt1.Length);


            //密文转换成明文
            string decrypt = DESHelper.DesDecrypt(encrypt1);
            Console.WriteLine(decrypt + ",长度:" + decrypt.Length);
            Console.ReadKey();
        }




        class DESHelper
    {
        public static string key = "zhengzhoujinhenggongsi";
        public static string DesEncrypt(string encryptString)
        {
            byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            byte[] keyIV = keyBytes;
            byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            return Convert.ToBase64String(mStream.ToArray());
        }
        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="decryptString"></param>
        /// <returns></returns>
        public static string DesDecrypt(string decryptString)
        {
            try
            {
                byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
                byte[] keyIV = keyBytes;
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch (Exception ex)
            {
                return "";
            }
        }


       
    }

猜你喜欢

转载自blog.csdn.net/liufeifeinanfeng/article/details/80687835