1 MD5, SHA… (hashlib)

可进行md5, sha1, sha224, sha256, sha384, sha512不同长度的加密
这些加密是不可逆的,没有直接解密的函数

  1. import hashlib
  2. s = 'hello world'
  3. print hashlib.md5(s).hexdigest()
  4. # 5eb63bbbe01eeed093cb22bb8f5acdc3 # 32位加密
  5. # 或者
  6. md5 = hashlib.md5()
  7. md5.update(s)
  8. print md5.hexdigest()
  9. print hashlib.md5(s).hexdigest()
  10. # 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee... # 128位加密

加盐: 即对要加密的字符串加上一段特定的字符串,增加破解难度

  1. # ...
  2. password = '123456'
  3. salt = 'this is a salt'
  4. md5.update(password + salt)
  5. print md5.hexdigest()

2 MD5, SHA… (Cryto.Hash)

Cryto为第三方包,可自行安装 pip install pycrypto 可进行HMAC, MD2, MD4, MD5, RIPEMD160, SHA1, SHA224, SHA256, SHA384, SHA512, CMAC, Poly1305加密

  1. from Crypto.Hash import MD5, SHA512
  2. s = 'hello world'
  3. md5 = MD5.new()
  4. md5.update(s)
  5. print md5.hexdigest()

3 base64

可进行base16, base32, base64等加密 这些加密是可逆的

  1. import base64
  2. password = '123456'
  3. base64.b64encode(password)
  4. # 'MTIzNDU2'
  5. base64.b64decode('MTIzNDU2')
  6. # '123456'
  7. s = '中国'
  8. base64.b64encode(s)
  9. # '5Lit5Zu9'
  10. print base64.decode('5Lit5Zu9')
  11. # 中国

4 crc32

binascii, base64, zlib模块均可进行crc32加密

  1. import zlib
  2. import base64
  3. import binascii
  4. password = '123456'
  5. print zlib.crc32(password)
  6. print binascii.crc32(password)
  7. print base64.binascii.crc32(password)

5 AES加密

双向加密