hash算法特点:
1)单向不可逆
2)雪崩效应(输入微小差异,结果千差万别)
25f9e794323b453885f5181f1b624d0b
102a23a0e4661368943dacb516a18cc8
3)随机输入,固定输出(无论明文有多大,输出的结果位数都是相同的128bit)
c4ca4238a0b923820dcc509a6f75849b
正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。
撞库实验:
import hashlib
hash_obj = hashlib.md5()
hash_obj.update("123456".encode("utf-8"))
res = hash_obj.hexdigest()
print(res)