md5不是加密算法,而是散列算法

转自:http://zhidao.baidu.com/question/295662710.html

起因: 

Md5加密解密,用 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile('','')

string strMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("123", "md5"); md5加密的字符,怎么解密??高手指点!!(asp.net)

这两天见到类似的问题好几个了,重申一个概念,揭示一个初学者的误区,如下:
1、md5不是加密算法,而是散列算法,数据变换过程和结果是不可逆的,即无法从md5编码逆向生成原文。
2、称作加密的,一定需要相应的解密,即数据变换必须是可逆的,或称双向的;简单举几个例子来说明什么叫可逆和不可逆:A=B+5,则B=A-5,可逆,异或运算也是可逆的;A=B%5(A等于B除以5之后的余数),则A的范围是0~4,假设为3,能够确定B吗?不行,3、8、13等都成立,这就是不可逆,“与、或”运算也是不可逆的。
3、md5编码实际上就是md5散列值,该值可以视作原始数据的摘要或者指纹,可以想象一下:根据新闻的摘要,能够还原出新闻的全文吗?根据一个人的指纹,就能知道这个人的所有信息吗(如性别、身高、体重、肤色等)?
4、md5经常被误以为是加密的根源是以下场景:对各种系统中的身份认证来说,“用户名+密码”的模式非常简单,故大量存在,很多编程人员为了将“密码”不明示,就对密码串进行md5散列,在数据库或文件中保存md5编码;但是,千万要注意,真正到了鉴别用户身份是否合法的时候,不是通过早先记录下来的md5编码生成原文再与用户当场输入的密码串进行比较,而是将用户当场输入的密码串也实施md5变换,比较的是前后两次生成的md5编码串。

希望这个科学常识对大家有用,不要再试图从md5编码揣测原文了,sha1编码同理。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值