[关闭]
@bergus 2015-12-02T06:12:35.000000Z 字数 1513 阅读 1404

python笔记之hashlib模块

python python模块 hashlib


涉及加密服务:14. Cryptographic Services其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。

快速入门

  1. import hashlib
  2. m = hashlib.md5() #创建hash对象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一个128位的密文
  3. print m #<md5 HASH object @ 000000000254ADF0>
  4. m.update('BeginMan')#更新哈希对象以字符串参数
  5. print m.digest() #返回摘要,作为二进制数据字符串值
  6. print m.hexdigest() #返回十六进制数字字符串 0b28251e684dfbd9102f8b6f0281c0c5
  7. print m.digest_size #16
  8. print m.block_size #64

使用new()创建指定加密模式的hash对象

  1. new(name, string='')
  2. """
  3. Return a new hashing object using the named algorithm;
  4. optionally initialized with a string.
  5. """
  6. h = hashlib.new('md5')
  7. print h #<md5 HASH object @ 000000000260BDB0>
  8. h2 = hashlib.new('ripemd160','what')
  9. print h2 #<ripemd160 HASH object @ 000000000271B9F0>
  10. h.update('beginman')
  11. print h.hexdigest() #666fc5baa93a7fb207c5bfff03b67732
  12. #等效
  13. s = hashlib.md5()
  14. s.update('beginman')
  15. print s.hexdigest() #666fc5baa93a7fb207c5bfff03b67732
  16. print h2.hexdigest() #9c1185a5c5e9fc54612808977ee8f548b2258d31

常用属性

  1. print hashlib.algorithms #('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') 列出所有加密算法
  2. print h.digest_size #16 产生的散列的字节大小。
  3. print h.block_size #64 The internal block size of the hash algorithm in bytes.

常用方法

  1. hash.update(arg)
  2. 更新哈希对象以字符串参数,如果同一个hash对象重复调用该方法,则m.update(a); m.update(b) is equivalent to m.update(a+b).
  3. hash.digest()
  4. 返回摘要,作为二进制数据字符串值,
  5. hash.hexdigest()
  6. 返回摘要,作为十六进制数据字符串值,
  7. hash.copy()
  8. 复制

应用实例

    注册、登录、文件上传、相册加密....
  1. import datetime
  2. KEY_VALUE = '/BeginMan/'
  3. now = datetime.datetime.now()
  4. m = hashlib.md5()
  5. str = '%s%s' %(KEY_VALUE,now.strftime("%Y%m%d"))
  6. m.update(str)
  7. value = m.hexdigest()
  8. print value #8db42d3e90b41105ed061b8347a7c850
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注