DES全称为Data EncryptionStandard,即数据加密标准。Des加密算法 是一种对称加密算法。
对称加密: 对明文的加密 和 对密文的解密 使用的是同一个密钥
密钥:加密时的密钥 和 解密时的密钥要一致,不然会报错
private static string keys = "lz123456"; //自己随便设置就行了
加密代码:
/// <summary> /// DES加密 /// </summary> /// <param name="str">需要加密的明文</param> /// <param name="sKey">密匙</param> /// <returns></returns> private string Encrypt(string str, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = Encoding.Default.GetBytes(str); des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);// 密匙 des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);// 初始化向量 MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); var retB = Convert.ToBase64String(ms.ToArray()); return retB; }
解密代码:
/// <summary> /// DES解密 /// </summary> /// <param name="pToDecrypt">需要解密的密文</param> /// <param name="sKey">密匙</param> /// <returns></returns> private string Decrypt(string pToDecrypt, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = Convert.FromBase64String(pToDecrypt); des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); // 如果两次密匙不一样,这一步可能会引发异常 cs.FlushFinalBlock(); return System.Text.Encoding.Default.GetString(ms.ToArray()); }
原文:https://www.cnblogs.com/liuzheng0612/p/11864989.html