- 这个包提供的是摘要算法,就是说通过产生hash值帮助用户确认内容是否有所改变。
- 因此clash的情况也是有的,但是少
- 摘要算法并非加密算法,因为无法通过结果反推明文。因此,这个单向计算特性决定了,可以在不存储明文口令的情况下验证用户所用的口令
- 如果只对密码做hash,那么对于短密码其实是很容易破解的。那么可以:
- 加salt。这个盐值放在明文后,与明文一起加密。
- salt本身也可以由用户名产生,那么更难破解一点。
看这里:F:\ProgramData\Anaconda3\envs\tf\Lib\hashlib.py
使用示例:
import hashlib
import time
#md5常用,且快,用32位的16进制字符串表示。
#fd4711dcf73e3bdde98179b26da14906
#32
md5 = hashlib.md5()
md5.update('疯狂星期四'.encode('utf-8'))
print(md5.hexdigest())
print(len(md5.hexdigest()))
#sha1的结果是40位16进制字符串表示
#7eb42c557cd02073ae4443442f3204658e1ed2b3
#40
sha1 = hashlib.sha1()
sha1.update('疯狂星期四'.encode('utf-8'))
print(sha1.hexdigest())
print(len(sha1.hexdigest()))
#sha256和sha512会更安全,但是会慢,长度也更长
#6f49dd1785254d25098b548966d07ffcd5b64abb2aedb4fc7dcd95e7afac34248d7350e1e597a5206d5dc16889b9d7275ac4e99ab99f813ea7a8f4f1eca18a7e
#128
sha512 = hashlib.sha512()
sha512.update('疯狂星期四'.encode('utf-8'))
print(sha512.hexdigest())
print(len(sha512.hexdigest()))