加密算法的分类:
以算法是否可逆:
可逆算法
是否使用同一个密码
对称加密
解密和加密的密钥是一个
不对称加密
解密和加密的密钥是同一对密钥
不可逆算法(hash算法)
特点:不可逆的、结果是唯一的 Md5
hashlib 库
import hashlib 定义
import hashlib
>>> md5 = hashlib.md5("12345".encode("utf-8"))
>>> md5
<md5 _hashlib.HASH object @ 0x000002BC123C7B10>
>>> md5.hexdigest()
'827ccb0eea8a706c4c34a16891f84e7b' # MD5的值
破解密码: 先把MD5的值存下来
去cmd5.com破解
盐值混淆:
import hashlib
>>> md5 = hashlib.md5("12345".encode("utf-8"))
>>> md5.update("&%$#@*&^%$#".encode("utf-8"))
>>> md5.hexdigest()
'1ca76dc12f1082bebb17d6ec187b45f8'
盐值越复杂,越安全
hmac
也是哈希加密库,并且用到了对称加密
参数:第一个参数是要加密的字符串,第二个参数是盐值,第三个参数是加密算法
import hashlib
>>> MD5 = hmac.new("12345".encode("utf-8"),"hahhah&&&&".encode("utf-8"),hashlib.md5)
>>> MD5.hexdigest()
'4deb2ab2f5ad1aecbf0dcb8142a853a8'
首先会使用对称加密(密钥就是盐值),再进行了一次md5加密(hash加密)