asp.net实现md5加密
来源: 阅读:590 次 日期:2014-10-27 12:54:37
温馨提示: 小编为您整理了“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>

/// <param name=strsource>需要加密的明文</param>

/// <returns>返回32位加密结果</returns>

public static string get_md5(string strsource, string sencode)

{

//new

system.security.cryptography.md5 md5 = new system.security.cryptography.md5cryptoserviceprovider();

//获取密文字节数组

byte[] bytresult = md5.computehash(system.text.encoding.getencoding(sencode).getbytes(strsource));

//转换成字符串,并取9到25位

//string strresult = bitconverter.tostring(bytresult, 4, 8);

//转换成字符串,32位

string strresult = bitconverter.tostring(bytresult);

//bitconverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉

strresult = strresult.replace(-, );

return strresult.tolower();

}

更多信息请查看IT技术专栏

更多信息请查看网络编程
手机网站地址:asp.net实现md5加密
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map