最近在学习 web 开发的时候遇到了一点问题, 有关摘要算法的, 个人查了资料还是不理解, 如下:
百度百科有这样一条:
一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。这正是好的消息摘要算法所具有的性质:输入改变了,输出也就改变了;两条相似的消息的摘要确不相近,甚至会大相径庭
我所疑惑的是既然是相同的输入对应相同的输出, 那么岂不是一个密码就对应一个根据算法产生的密文, 比如我这样:
import hashlib pwd = 'abc'.encode('ascii') s = hashlib.sha1(pwd) s.hexdigest() s # -> 'a9993e364706816aba3e25717850c26c9cd0d89d'
那如果一个坏人知道了是sha1
算法和最后的s
密文, 岂不是就可以反向推理出来密码是abc
? 比如说很多人的密码可能就是简单的生日(类似 900101 这种), 那么推测 + 试验 + 比对不就可以推测出那个人的密码了么?
第一次接触这类知识, 理解还有很大的偏差, 望各位前辈解答指教!
侃侃尔雅
相关分类