分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

ASP.NET 常用的字符串加密

发布时间:2023-09-06 01:59责任编辑:赖小花关键词:.NET

字符串常用的加密有三种

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()); ???????}

  

ASP.NET 常用的字符串加密

原文地址:https://www.cnblogs.com/ubshoes/p/9163415.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved