标签:bytearray csp ring 相同 函数 字符 summary 安全性 一个
字符串常用的加密有三种
1、MD5加密,这个常用于密码,单向加密,不可解密,有些在线解密的可以解大部份,用代码不能实现,如果不想让人解密,加密后随便截取一段就好了;
2、Base64位加密,通常加密后字符串尾会有两个 == ,可解密;
3、SHA加密,单向加密,安全性没MD5好。
以上不可解密都是相对的,这些加密算法都是跨平台的。
using System.Web.Security; using System.Security.Cryptography; /// <summary> /// MD5函数 /// </summary> /// <param name="val">原始字符串</param> /// <returns>MD5结果</returns> public static string MD5String(string val) { if (val.Trim().Equals(String.Empty) == true) return String.Empty; byte[] b = Encoding.UTF8.GetBytes(val); b = new MD5CryptoServiceProvider().ComputeHash(b); string ret = String.Empty; for (int i = 0; i < b.Length; i++) ret += b[i].ToString("x").PadLeft(2, ‘0‘); return ret; } /// <summary> /// SHA1字符串加密 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string SHA1(string obj) { return FormsAuthentication.HashPasswordForStoringInConfigFile(obj, "SHA1"); } /// <summary> /// SHA256字符串加密 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string SHA256(string obj) { //return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(obj, "SHA256"); byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(obj); SHA256 sha256 = new SHA256Managed(); byte[] retVal = sha256.ComputeHash(bytValue); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } /// <summary> /// Base64位加密 /// </summary> /// <param name="val"></param> /// <returns></returns> public static string EncryptBase64(string val) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(val)); } /// <summary> /// Base64位解密 /// </summary> /// <param name="val"></param> /// <returns></returns> public static string DecryptBase64(string val) { return Encoding.Default.GetString(Convert.FromBase64String(val)); } /// <summary> /// BASE64位(MD5加密)[标准,非MD5加密再BASE64位加密] /// </summary> /// <param name="val">原始字符串</param> /// <returns>MD5结果</returns> public static string EncryptBase64AndMD5(string val) { if (val.Trim().Equals(String.Empty) == true) return String.Empty; MD5CryptoServiceProvider MD5CSP = new MD5CryptoServiceProvider(); return Convert.ToBase64String(MD5CSP.ComputeHash(Encoding.UTF8.GetBytes(val))); }
也可以定义一个KEY,自定义加密算法
/// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <param name="encryptKey">加密密钥,要求为8位</param> /// <returns>加密成功返回加密后的字符串,失败返回源串</returns> public static string Encode(string encryptString, string encryptKey) { encryptKey = UtilsString.SubString(encryptKey, 8); encryptKey = encryptKey.PadRight(8, ‘ ‘); byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString">待解密的字符串</param> /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param> /// <returns>解密成功返回解密后的字符串,失败返源串</returns> public static string Decode(string decryptString, string decryptKey) { decryptKey = UtilsString.SubString(decryptKey, 8); decryptKey = decryptKey.PadRight(8, ‘ ‘); byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); }
标签:bytearray csp ring 相同 函数 字符 summary 安全性 一个
原文地址:https://www.cnblogs.com/ubshoes/p/9163415.html