private const string KEY = "&youyouyouqiekenao&";
/// <summary>
/// 初始化des实例秘钥及向量
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private static DESCryptoServiceProvider InitDESInstance(string key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] salt = new byte[] { 0x0A, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xF1 };
byte[] keyByte = Encoding.UTF8.GetBytes(key);
Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(keyByte, salt, 8);
Rfc2898DeriveBytes rfcIv = new Rfc2898DeriveBytes("0987654321", salt, 8);
des.Key = rfcKey.GetBytes(8);
des.IV = rfcIv.GetBytes(8);
return des;
}
private static DESCryptoServiceProvider InitDESInstance()
{
return InitDESInstance(KEY);
}
/// <summary>
/// 基于Base64加密
/// </summary>
/// <param name="plaintext"></param>
/// <returns></returns>
public static string DESEncryptBase64(string plaintext)
{
DESCryptoServiceProvider des = InitDESInstance();
byte[] dataByteArray = Encoding.UTF8.GetBytes(plaintext);
string ciphertext = "";
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(dataByteArray, 0, dataByteArray.Length);
cs.FlushFinalBlock();
ciphertext = Convert.ToBase64String(ms.ToArray());
}
return ciphertext;
}
/// <summary>
/// 基于Base64
/// </summary>
/// <param name="encrypt"></param>
/// <returns></returns>
public static string DESDecryptBase64(string encrypt)
{
DESCryptoServiceProvider des = InitDESInstance();
byte[] dataByteArray = Convert.FromBase64String(encrypt);
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(dataByteArray, 0, dataByteArray.Length);
cs.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray());
}
}