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();
}
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程