哈希
- 1、任意长度的输入,通过哈希算法,得到固定长度的输出
- 2、不同的输入会哈希成相同的输出
- 3、不能从输出倒推输入(但是目前md5可以破解)
哈希函数有md5、sha1、sha256
哈希碰撞
import hashlib
print hashlib.sha256("hello").hexdigest()
print hashlib.md5("hello").hexdigest()
print hashlib.sha1("hello").hexdigest()
输出
王小云院士提出的哈希函数碰撞攻击理论
在一个任意的prefix后加上不同的padding
使其md5值一样
fastcoll hashclash
sha1 clash
例题1、
如果要求满足特定条件如下
salt="123456"
hashlib.sha256(salt+x).hexdigest()[0:6]=="123456"
则
salt="123456"
import string
import hashlib
for i1 in string.printable:
for i2 in string.printable:
for i3 in string.printable:
for i4 in string.printable:
if hashlib.sha256(salt+i1+i2+i3+i4).hexdigest()[0:6]=="123456":
print salt+i1+i2+i3+i4
输出