public static string UserMd5(string str) { string cl = str; 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("X2"); } return pwd; }
另外
public static string MD5_encrypt(string encryptString) { byte[] result = Encoding.UTF8.GetBytes(encryptString); MD5 md5 = new MD5CryptoServiceProvider(); byte[] output = md5.ComputeHash(result); string encryptResult = BitConverter.ToString(output).Replace("-", ""); return encryptResult; }
之前用过
#region MD5加密/解密操作 private static string m_DesKey = "XYKJ4321"; /// <summary> /// 对指定的字符串进行MD5加密。 /// </summary> /// <param name="p_OrginString">要加密的字符串。</param> /// <param name="p_DesKey">密钥</param> /// <returns>加密后的字符串</returns> public static string EncryptMD5(string p_OrginString, string p_DesKey) { using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { byte[] inputByteArray = Encoding.UTF8.GetBytes(p_OrginString); des.Key = ASCIIEncoding.ASCII.GetBytes(p_DesKey); des.IV = ASCIIEncoding.ASCII.GetBytes(p_DesKey); System.IO.MemoryStream ms = new System.IO.MemoryStream(); using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cs.Close(); } string str = Convert.ToBase64String(ms.ToArray()); ms.Close(); return str; } } /// <summary> /// 对指定的字符串使用默认的密钥进行MD5加密。 /// </summary> /// <param name="p_OrginString">要加密的字符串。</param> /// <returns>加密后的字符串</returns> public static string EncryptMD5(string p_OrginString) { return EncryptMD5(p_OrginString, m_DesKey); } /// <summary> /// 对MD5加密的字符串进行解密。 /// </summary> /// <param name="p_EncryptString">要解密的的字符串</param> /// <param name="p_DesKey">密钥</param> /// <returns>已解密的字符串。</returns> public static string DecryptMD5(string p_EncryptString, string p_DesKey) { if (p_EncryptString.Length == 0) return ""; byte[] inputByteArray; try { inputByteArray = Convert.FromBase64String(p_EncryptString); using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { des.Key = ASCIIEncoding.ASCII.GetBytes(p_DesKey); des.IV = ASCIIEncoding.ASCII.GetBytes(p_DesKey); System.IO.MemoryStream ms = new System.IO.MemoryStream(); using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cs.Close(); } string str = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return str; } } catch { return ""; } } /// <summary> /// 对MD5加密的字符串使用默认的密匙进行解密。 /// </summary> /// <param name="p_EncryptString">要解密的的字符串</param> /// <returns>已解密的字符串。</returns> public static string DecryptMD5(string p_EncryptString) { return DecryptMD5(p_EncryptString, m_DesKey); } /// <summary> /// 计算字符串或者文件MD5值 /// </summary> /// <param name="str">需要计算的字符串或文件路径</param> /// <param name="isStr">true为字符串,false为文件</param> /// <returns>MD5值</returns> public static string GetMD5Value(String str, Boolean isStr) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] md5ch; if (isStr) { byte[] ch = System.Text.Encoding.Default.GetBytes(str); md5ch = md5.ComputeHash(ch); } else { if (!File.Exists(str)) return string.Empty; FileStream fs = new FileStream(str, FileMode.Open, FileAccess.Read); md5ch = md5.ComputeHash(fs); fs.Close(); } md5.Clear(); string strMd5 = ""; for (int i = 0; i < md5ch.Length - 1; i++) { strMd5 += md5ch[i].ToString("x").PadLeft(2, '0'); } return strMd5; } /// <summary> /// 计算字节数组的MD5 /// </summary> /// <param name="p_Bytes">字节数组</param> /// <returns>md5值</returns> public static string GetMD5Value(byte[] p_Bytes) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] md5ch = md5.ComputeHash(p_Bytes); md5.Clear(); string strMd5 = ""; for (int i = 0; i < md5ch.Length - 1; i++) { strMd5 += md5ch[i].ToString("x").PadLeft(2, '0'); } return strMd5; } #endregion
AES加密
/// <summary> /// ASE加解密 /// </summary> public class AESHelper { static string _Key; /// <summary> /// 获取密钥 /// </summary> public static string Key { get { return _Key; ////必须是16位 } set { _Key = value; } } //默认密钥向量 private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// AES加密算法 /// </summary> /// <param name="plainText">明文字符串</param> /// <returns>将加密后的密文转换为Base64编码,以便显示</returns> public static string AESEncrypt(string plainText) { //分组加密算法 SymmetricAlgorithm des = Rijndael.Create(); byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组 //设置密钥及密钥向量 des.Key = Encoding.UTF8.GetBytes(Key); des.IV = _key1; byte[] cipherBytes = null; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cipherBytes = ms.ToArray();//得到加密后的字节数组 cs.Close(); ms.Close(); } } return Convert.ToBase64String(cipherBytes); } /// <summary> /// AES解密 /// </summary> /// <param name="cipherText">密文字符串</param> /// <returns>返回解密后的明文字符串</returns> public static string AESDecrypt(string showText) { byte[] cipherText = Convert.FromBase64String(showText); SymmetricAlgorithm des = Rijndael.Create(); des.Key = Encoding.UTF8.GetBytes(Key); des.IV = _key1; byte[] decryptBytes = new byte[cipherText.Length]; using (MemoryStream ms = new MemoryStream(cipherText)) { using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read)) { cs.Read(decryptBytes, 0, decryptBytes.Length); cs.Close(); ms.Close(); } } return Encoding.UTF8.GetString(decryptBytes).Replace("