在日常的开发过程中,经常会涉及对隐私信息如密码等字段进行加密后在保存的情况,下面简单演示一下Python中的加密实现方式。
加密使用的是hashlib标准库,里面包含多种加密算法,如如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。
import hashlib
ps = "abc123456"
pwd = "abc123456"
m = hashlib.md5(ps.encode())
mm = hashlib.md5(pwd.encode())
m1 = hashlib.sha1(ps.encode())
m2 = hashlib.sha224(ps.encode())
m3 = hashlib.sha256(ps.encode())
print(m.hexdigest())
print(mm.hexdigest()) # 相同的字符串加密后的结果是相同的
print(m1.hexdigest())
print(m2.hexdigest())
print(m3.hexdigest())
输出:
0659c7992e268962384eb17fafe88364
0659c7992e268962384eb17fafe88364
370194ff6e0f93a7432e16cc9badd9427e8b4e13
418d9372b81e9f1f62a7ac461b68f5ad6bef0784a5607cc1855a07de
a03c32fcd351cba2d9738622b083bed022ef07793bd92b59faea0207653f371d
md5加密后是无法进行解密的,那么网上的md5在线解码网站是如何实现的呢?
因为同一个字符串加密后的内容是固定的,所以解码网站可以通过穷举字符组合的方式创建明文密码对应查询数据库,解码其实是反向查询。
当我们对一个复杂较长的字符串加密后,用得到的密文去解码网站解码是不会查询到结果的。