在开发项目中有许多数据需要我们进行加密解密操作,这里介绍几个加密解密的方法。
一:MD5加密
MD5加密是一种单向的加密算法,它只能加密,加密后不能进行逆向解密操作,常用于数字签名和加密用户密码。
下面利用C#实现MD5加密
(1)返回base64形式的加密数据
private string MD5_Encrypt(string msg) { MD5 md5 = MD5.Create(); byte[] data = Encoding.Default.GetBytes(msg); //待加密的字符串转成字节类型 byte[] en_data = md5.ComputeHash(data, 0, data.Length);//加密 return Convert.ToBase64String(en_data); //返回加密后数据的base64形式字符串 }
(2)返回16进制形式的数据
private string MD5_Encrypt(string msg) { MD5 md5 = MD5.Create(); byte[] data = Encoding.Default.GetBytes(msg); //待加密的字符串转成字节类型 byte[] en_data = md5.ComputeHash(data, 0, data.Length);//加密 StringBuilder sb = new StringBuilder(); for (int i = 0; i < en_data.Length; i++) { sb.Append(en_data[i].ToString("X2")); } return sb.ToString(); }
二:DES加密解密
DES加密算法是一种对称的加密算法,对称加密指:加密和解密用同一组的钥匙。相对的 非对称加密算法加密密匙用一组,解密密匙用另一组。
下面利用C#实现DES加密解密
DES加密
private string DES_Encrypt(string msg,string key) { byte[] data = Encoding.Default.GetBytes(msg);//待加密的字符串转成字节类型 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] rgbKey=ASCIIEncoding.ASCII.GetBytes(key.PadRight(8,'a'));//密匙 byte[] rgbIV = ASCIIEncoding.ASCII.GetBytes(key.PadRight(8,'a'));//向量 des.Key = rgbKey;//设置密匙 des.IV = rgbIV; //设置初始化向量 MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);//定义加密转换流 cs.Write(data, 0, data.Length); //加密数据写到内存流 cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray());//输出base64形式的加密字符串 }
DES解密
private string DES_Decrypt(string msg,string key) { byte[] data = Convert.FromBase64String(msg); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(key.PadRight(8, 'a'));//密匙 byte[] rgbIV = ASCIIEncoding.ASCII.GetBytes(key.PadRight(8, 'a'));//向量 des.Key = rgbKey;//设置密匙 des.IV = rgbIV; //设置初始化向量 MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(data, 0, data.Length); //解密数据并写到内存流 return Encoding.Default.GetString(ms.ToArray());//将解密后字节数组转换成字符串 }