Des对称可逆加密

Posted anyihen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Des对称可逆加密相关的知识,希望对你有一定的参考价值。

    /// <summary>

    /// DES AES Blowfish

    ///  对称加密算法的优点是速度快,

    ///  缺点是密钥管理不方便,要求共享密钥。

    /// 可逆对称加密  密钥长度8

    /// </summary>

using System.Security.Cryptography;

  public class DesEncrypt

    {

        //8位长度

        private static string KEY = "ruanmou1";

        private static byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(KEY.Substring(0, 8));

        private static byte[] rgbIV = ASCIIEncoding.ASCII.GetBytes(KEY.Insert(0, "w").Substring(0, 8));

 

        /// <summary>

        /// DES 加密

        /// </summary>

        /// <param name="strValue"></param>

        /// <returns></returns>

        public static string Encrypt(string strValue)

        {

            DESCryptoServiceProvider dsp = new DESCryptoServiceProvider();

            using (MemoryStream memStream = new MemoryStream())

            {

                CryptoStream crypStream = new CryptoStream(memStream, dsp.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

                StreamWriter sWriter = new StreamWriter(crypStream);

                sWriter.Write(strValue);

                sWriter.Flush();

                crypStream.FlushFinalBlock();

                memStream.Flush();

                return Convert.ToBase64String(memStream.GetBuffer(), 0, (int)memStream.Length);

            }

        }

 

        /// <summary>

        /// DES解密

        /// </summary>

        /// <param name="EncValue"></param>

        /// <returns></returns>

        public static string Decrypt(string EncValue)

        {

            DESCryptoServiceProvider dsp = new DESCryptoServiceProvider();

            byte[] buffer = Convert.FromBase64String(EncValue);

 

            using (MemoryStream memStream = new MemoryStream())

            {

                CryptoStream crypStream = new CryptoStream(memStream, dsp.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

                crypStream.Write(buffer, 0, buffer.Length);

                crypStream.FlushFinalBlock();

                return ASCIIEncoding.UTF8.GetString(memStream.ToArray());

            }

        }

    }

 

string desEn1 = DesEncrypt.Encrypt("张三李四");

 string desDe1 = DesEncrypt.Decrypt(desEn1);

技术图片

 

以上是关于Des对称可逆加密的主要内容,如果未能解决你的问题,请参考以下文章

移动端加解密

RSA、SHA、DES、MD5、BASE64的可逆性分析

密码加密

数据加密介绍

MD5,Des,RSA加密解密

基于C#的RSA非对称加密算法