加密算法
- 對稱加密
- 數據加密使用相同的鑰匙
- 常見的 對稱加密 算法主要有
DES
、3DES
、AES
等
- 非對稱加密
- 加密和解密使用不同的鑰匙,公鑰用於加密數據,私鑰用於解密數據
- 常見的 非對稱算法 主要有
RSA
、DSA
等
- 單向加密
- 只能加密,不能解密
- 散列算法(hash) 主要有
SHA-1
、MD5
等- 特點:不可逆、定長輸出、抗修改性、強碰撞性。
方法 | 作用 |
---|---|
hashlib.new(name,data=b) |
生成一個hash 對象 |
hashlib.hash(data=b) |
生成一個使用該算法的hash 對象 |
hash 對象.update (arg=None ) |
更新hash 對象 |
hash 對象.digest() |
返回hash 算法計算得到的值(bytes 類型) |
hash 對象.hexdigest() |
返回hash 算法計算得到的值(str 類型) |
hashlib.md5() |
生成md5 對象 |
import hashlib
hashlib.md5('你好')
返回 TypeError: Unicode-objects must be encoded before hashing
類型錯誤
提示hashlib.ma5()
加密的數據必須是一個bytes
類型的數據,因此要對他進行編碼
import hashlib
res = hashlib.ma5('你好'.encode())
print(res)
返回值 <md5 HASH object @ 0x0000015381FA3C10>
- 這裏可以看到返回的值是一個類,那麼要得到他的值可以使用
digest
、hexdigest
方法
import hashlib
res = hashlib.ma5('你好'.encode())
print(res.hexdigest())
print(res.digest())
返回值
8277e0910d750195b448797616e091ad
b'\x82w\xe0\x91\ru\x01\x95\xb4Hyv\x16\xe0\x91\xad
、
- 如果想要更新
hash
對象內的值要使用update
方法對對象進行更新。
import hashlib
a = 'd'.encode()
res = hashlib.md5(a)
print(res.hexdigest())
print(res.digest())
res.update('張三'.encode())
print(res.hexdigest())
print(res.digest())
返回值
8277e0910d750195b448797616e091ad
b'\x82w\xe0\x91\ru\x01\x95\xb4Hyv\x16\xe0\x91\xad'
9bcb8586295cd14fc9f910a521a1cccf
b'\x9b\xcb\x85\x86)\\\xd1O\xc9\xf9\x10\xa5!\xa1\xcc\xcf