zoukankan      html  css  js  c++  java
  • ASP.NET中的MD5加密

    新人冒泡,打今起在园子里算是开博了,先来写点关于基础性的东西 为以后的写其他的文章做准备。

    今天就先来说说MD5加密与在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的加密方式很简单,代码如下:

    1 FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();

    需要注意的是,如果MD5加密的时候转换的是小写,那么在验证的时候也要转换成小写,保持统一。另外上述方式为32位的MD5加密方式,如果是16位的 则取32位加密结果的中间16位的值即可。

    本文出自 低调码农的笔记簿 http://www.cnblogs.com/webconfig/articles/3620707.html 转载请注明出处,如有谬误不当之处,欢迎指正拍砖,不胜感谢!!

  • 相关阅读:
    Django内置的响应类
    Django的路由规则
    Django中的中间件
    celery_2:异步任务简单使用
    celery_1:简介及定时任务简单使用
    mac系统 redis安装及常用命令
    redis连接:Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    千分位函数percentile()和percentile_approx()
    模型评估_1—回归模型:mse、rmse、mae、r2
    Spark_4_2:Spark函数之collect、toArray和collectAsMap
  • 原文地址:https://www.cnblogs.com/webconfig/p/3620707.html
Copyright © 2011-2022 走看看