C# DES加密解密

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());
}

 


posted on 2019-11-15 10:51  阿里正正  阅读(162)  评论(0编辑  收藏  举报

导航