MD5加密:
/// <summary>
/// 16位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5Encrypt16(string paramToEncrypt)
{
var md5 = new MD5CryptoServiceProvider();
string encryptedStr = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(paramToEncrypt)), 4, 8);
encryptedStr = encryptedStr .Replace("-", "");
return encryptedStr ;
}
/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5Encrypt32(string password)
{
string cl = password;
string pwd = "";
MD5 md5 = MD5.Create(); //实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
pwd = pwd + s[i].ToString("X");
}
return pwd;
}
DES加解密:
/// <summary>
/// Des ecb encrypt, ecb no need iv
/// </summary>
/// <param name="encryptString">待加密字符串</param>
/// <param name="sKey">加密密钥</param>
/// <returns></returns>
public static string DesEncrypt_ECB(string encryptString, string sKey)
{
try
{
string key;
//密钥为8位
if (sKey.Length <= 8)
key = sKey.PadRight(8, '0');
else
key = sKey.Substring(0, 8);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] encryptBytes = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider
{
// 使用ECB方式
Mode = CipherMode.ECB,
// PKCS7padding
Padding = PaddingMode.PKCS7,
Key = keyBytes
};
using MemoryStream memStream = new MemoryStream();
using CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateEncryptor(), CryptoStreamMode.Write);
crypStream.Write(encryptBytes, 0, encryptBytes.Length);
crypStream.FlushFinalBlock();
return Convert.ToBase64String(memStream.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// Des ecb decrypt
/// </summary>
/// <param name="decryptString"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public static string DesDecrypt_ECB(string decryptString, string sKey)
{
//key为8位
string key;
if (sKey.Length <= 8)
key = sKey.PadRight(8, '0');
else
key = sKey.Substring(0, 8);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider
{
Mode = CipherMode.ECB,
Key = keyBytes
};
using MemoryStream memStream = new MemoryStream();
using CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateDecryptor(), CryptoStreamMode.Read);
crypStream.Write(inputByteArray, 0, inputByteArray.Length);
crypStream.FlushFinalBlock();
return Encoding.Default.GetString(memStream.ToArray());
}