C#DES加密解密需要注意的是加密秘钥和加密向量一定要是8位长度的字符串
DES加密
/// <summary>
/// DES加密
/// </summary>
/// <param name="encryptString">待加密字符串</param>
/// <param name="key">加密秘钥</param>
/// <param name="iv">加密向量</param>
/// <returns></returns>
public static string EncryptDES(string encryptString, string key = null, string iv = null)
{
key = string.IsNullOrEmpty(key) ? DES_IV.Substring(0,8) : key.Substring(0,8);
iv = string.IsNullOrEmpty(iv) ? DES_IV.Substring(0,8) : iv.Substring(0,8);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider { Key = Encoding.Default.GetBytes(key), IV = Encoding.Default.GetBytes(iv) })
{
ICryptoTransform ct = des.CreateEncryptor();
byte[] encryptString_Byte = Encoding.Default.GetBytes(encryptString);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(encryptString_Byte, 0, encryptString_Byte.Length);
cs.FlushFinalBlock();
ct.Dispose();
ms.Dispose();
cs.Dispose();
return Convert.ToBase64String(ms.ToArray());
}
}
DES解密
/// <summary>
/// DES解密
/// </summary>
/// <param name="decryptString">待解密字符串</param>
/// <param name="key">加密秘钥</param>
/// <param name="iv">加密向量</param>
/// <returns></returns>
public static string DecryptDES(string decryptString, string key = null, string iv = null)
{
key = string.IsNullOrEmpty(key) ? DES_IV.Substring(0, 8) : key.Substring(0, 8);
iv = string.IsNullOrEmpty(iv) ? DES_IV.Substring(0, 8) : iv.Substring(0, 8);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider { Key = Encoding.Default.GetBytes(key), IV = Encoding.Default.GetBytes(iv) })
{
ICryptoTransform ct = des.CreateDecryptor();
byte[] decryptString_Byte = Convert.FromBase64String(decryptString);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(decryptString_Byte, 0, decryptString_Byte.Length);
cs.FlushFinalBlock();
ct.Dispose();
ms.Dispose();
cs.Dispose();
return Encoding.Default.GetString(ms.ToArray());
}
}
MD5加密
/// <summary>
/// MD5加密
/// </summary>
/// <param name="encryptString">待加密字符串</param>
/// <returns></returns>
public static string EncryptMD5(string encryptString)
{
byte[] encryptString_Byte = Encoding.Default.GetBytes(encryptString);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(encryptString_Byte);
return BitConverter.ToString(output).Replace("-", "").ToLower();
}