利用Base64对文本进行加密解密操作

有时候我们需要对数据进行加密解密,最常见的加密方法有MD5加密、Base64加密。而今天讲的是Base64加密解密方法,我们需要引用两个文件using System.Collections.Generic;和using System.Security.Cryptography;同时我们定义两个变量 KEY_64和IV_64来存放字符,这两个变量是加密和解密需要用到的,但这必须是8个字符且是64Bit。

例如如此定义变量:

 private static string KEY_64 = "a4G28=Jk"; //必须是8个字符(64Bit)
 private static string IV_64 = "JKbN=5[?";  //必须8个字符(64Bit)
解密的方法如下:

 /// <summary>
        /// 加密
        /// </summary>
        /// <param name="PlainText">未加密文本</param>
        /// <returns></returns>
        public static string Encrypt(string PlainText)
        {
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
            int i = cryptoProvider.KeySize;
            MemoryStream ms = new MemoryStream();
            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

            StreamWriter sw = new StreamWriter(cst);
            sw.Write(PlainText);
            sw.Flush();
            cst.FlushFinalBlock();
            sw.Flush();
            return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

        }
解密的方法如下:

 /// <summary>
        /// 解密
        /// </summary>
        /// <param name="CypherText">加密过的字符</param>
        /// <returns></returns>
        public static string Decrypt(string CypherText)
        {
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

            byte[] byEnc;
            try
            {
                byEnc = Convert.FromBase64String(CypherText);
            }
            catch
            {
                return null;
            }

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream(byEnc);
            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cst);
            return sr.ReadToEnd();
        }
同时,你可以自定义自己的加密程序,比如字符中含有数字你可以对其进行加减乘除求余等数学操作,针对字符的可以进行ASCII处理,再或者利用高数的思想进行算法运算,解密则根据你自己定义的规则进行反算回来。


猜你喜欢

转载自blog.csdn.net/qq_21726707/article/details/70162864