一、DES简介
在线DES加密/解密工具
DES算法是一种最通用的对称算法,因为算法本身是公开的,所以其安全性在于的安全性。基于的算法通常有两类:对称算法和公开算法。对称算法的对称性体现在加能够从解推算出来,反之亦然。在大多数对称算法中,加解密的是相同的,DES就是这样。可见,对称算法的加解都是保密的。而公开算法的加是公开的,解是保密的。
二、C#使用DES加密解密
加密
public static string EncryptString(string str, string sKey)
{
byte[] inputByteArray = Encoding.Default.GetBytes(str);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = Encoding.ASCII.GetBytes(sKey);// 秘钥
des.IV = Encoding.ASCII.GetBytes(sKey);// 初始化向量
using (MemoryStream ms = new MemoryStream())
{
using (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;
}
}
}
解密
public static string DecryptString(string pToDecrypt, string sKey)
{
byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = Encoding.ASCII.GetBytes(sKey);
des.IV = Encoding.ASCII.GetBytes(sKey);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
// 如果两次秘钥不一样,这一步可能会引发异常
cs.FlushFinalBlock();
}
return Encoding.Default.GetString(ms.ToArray());
}
}
}