1 MD5, SHA… (hashlib)
可进行md5, sha1, sha224, sha256, sha384, sha512不同长度的加密
这些加密是不可逆的,没有直接解密的函数
import hashlib
s = 'hello world'
print hashlib.md5(s).hexdigest()
# 5eb63bbbe01eeed093cb22bb8f5acdc3 # 32位加密
# 或者
md5 = hashlib.md5()
md5.update(s)
print md5.hexdigest()
print hashlib.md5(s).hexdigest()
# 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee... # 128位加密
加盐: 即对要加密的字符串加上一段特定的字符串,增加破解难度
# ...
password = '123456'
salt = 'this is a salt'
md5.update(password + salt)
print md5.hexdigest()
2 MD5, SHA… (Cryto.Hash)
Cryto为第三方包,可自行安装
pip install pycrypto
可进行HMAC, MD2, MD4, MD5, RIPEMD160, SHA1, SHA224, SHA256, SHA384, SHA512, CMAC, Poly1305加密
from Crypto.Hash import MD5, SHA512
s = 'hello world'
md5 = MD5.new()
md5.update(s)
print md5.hexdigest()
3 base64
可进行base16, base32, base64等加密 这些加密是可逆的
import base64
password = '123456'
base64.b64encode(password)
# 'MTIzNDU2'
base64.b64decode('MTIzNDU2')
# '123456'
s = '中国'
base64.b64encode(s)
# '5Lit5Zu9'
print base64.decode('5Lit5Zu9')
# 中国
4 crc32
binascii, base64, zlib模块均可进行crc32加密
import zlib
import base64
import binascii
password = '123456'
print zlib.crc32(password)
print binascii.crc32(password)
print base64.binascii.crc32(password)
5 AES加密
双向加密