asp.net实现md5加密
MD5加密简单的说就是把一段明文通过某种运算方式求出密文。例如:明文为:abcdefg通过一些列运算得到密文7ac66c0f148de9519b8bd264312c4d64
它具有两个特性:1.无碰撞,2.不可逆。
无碰撞是指:7ac66c0f148de9519b8bd264312c4d64这段密文只能由abcdefg这段明文得到,除此之外其他的明文加密后其值绝对不会等于7ac66c0f148de9519b8bd264312c4d64,也就是说没有那两个明文加密后会得到相同的密文。
不可逆是指:明文通过加密后得到密文,而无法通过密文求出明文。也就是说当我们知道明文adcdefg可以通过加密得到7ac66c0f148de9519b8bd264312c4d64,但是我们如果知道某段文字加密后得到7ac66c0f148de9519b8bd264312c4d64,却无法算出7ac66c0f148de9519b8bd264312c4d64这段文字是由谁加密而来的。
那么有同学一定会问,具体应该运用在什么地方?
一般来说我们在做网站登录系统的时候密码都是密文保存的,一般用的都是MD5加密。
用户在填写用户名密码点击注册之后,我们验证通过,要把用户信息存入数据库的时候,就需要先把用户输入的密码,通过MD5加密的方式,把加密后的密文,存入密码的字段。
那么一定有同学会细心的发现,刚刚还提到过MD5加密是不可逆的,那么用户登录的时候如何判断用户输入的密码是否正确的呢?
例如用户设置的密码为abcdefg,而存储的时候我们存储的是abcdefg加密过之后得到的值7ac66c0f148de9519b8bd264312c4d64,那么用户再次登录时会输入密码abcdefg,我们如何比较两者是否相等?
我们无法通过加密后的值换算出加密前的值,因此我们通常的做法是,把用户再次登录时输入的密码再次加密和数据库中存放的值进行比对,如果相等则说明输入的密码正确。
OK,基本原理和运用场景基本说的差不多了,最后再来说说在ASP.NET中如何进行MD5加密。
在ASP.NET中MD5的加密方式很简单,代码如下:
FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
需要注意的是,如果MD5加密的时候转换的是小写,那么在验证的时候也要转换成小写,保持统一。另外上述方式为32位的MD5加密方式,如果是16位的则取32位加密结果的中间16位的值即可。
这里还有示例,大家参考一下
///<summary>
///MD5加密
///</summary>
///<paramname="strSource">需要加密的明文</param>
///<returns>返回32位加密结果</returns>
publicstaticstringGet_MD5(stringstrSource,stringsEncode)
{
//new
System.Security.Cryptography.MD5md5=newSystem.Security.Cryptography.MD5CryptoServiceProvider();
//获取密文字节数组
byte[]bytResult=md5.ComputeHash(System.Text.Encoding.GetEncoding(sEncode).GetBytes(strSource));
//转换成字符串,并取9到25位
//stringstrResult=BitConverter.ToString(bytResult,4,8);
//转换成字符串,32位
stringstrResult=BitConverter.ToString(bytResult);
//BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
strResult=strResult.Replace("-","");
returnstrResult.ToLower();
}
相关文章
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- .Net Core3.1 SignalR for WPF Asp.net
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- .net安装 Linux 上的 ASP.NET 环境(linux安装asp)
- 程序员级别鉴定书(.NET面试问答集锦)
- asp.net的web服务MSSQL检测ASP.NET的Web服务——利用它构建更棒的站点(mssql检测基于)
- NET与Oracle携手走向未来(.net 对oracle)
- ASP编程存取MySQL数据库出现乱码问题(asp读mysql乱码)
- NET与MySQL的无限结合(.net 连接mysql)
- asp.net中List的使用方法
- asp.net(C#)压缩图片,可以指定图片模板高宽
- ASP.NET中MD5与SHA1加密的几种方法
- asp.net页面编码常见问题小结
- asp.net下使用jquery的ajax+WebService+json实现无刷新取后台值的实现代码
- asp.net中穿透Session0隔离(二)
- .Net中导出数据到Excel(asp.net和winform程序中)
- Asp.net实时显示文本框字数实现代码
- asp.net中文件下载功能的实例代码
- 注册页实现激活邮箱验证(asp.netc#)
- ASP.NET加密口令的方法实例
- Asp.net"对路径的访问被拒绝"解决方法的分析
- asp.net中url字符串编码乱码的原因与解决方法
- ASP.NET中实时图表的实现方法分享
- 分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
- ASP.NET汉字转拼音-输入汉字获取其拼音的具体实现