hashlib模块

hashlib 模块

hashlib 模块的简介
  • hashlib 是 Python内置摘要算法的标准库,提供的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string="") 方法可通过指定系统所支持的 hash 算法来构造相应的 hash 对象;也支持创建OpenSSL里提供的算法对象。
  • 摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个固定长度的字符串(通常用16进制的字符串表示);MD5是最常见的摘要算法, 速度很快,将任意长度的字符串,转化为固定的128bit;sha1—160bit;sha224—224bit;sha256–256bit;sha384–384bit;sha512–512bit,位数越多越不容易产生冲突,破解越难。但是生成秘钥(字符串)的时间复杂度越高。
hashlib 模块的使用
  • 样例1
from hashlib import md5, sha1, sha224, sha256, sha384, sha512
def test_hashlib(data):
    hash_list = [md5, sha1, sha224, sha256, sha384, sha512]
    for i in hash_list:
        print i,i(data).hexdigest()
data = "wewuewewie"
test_hashlib(data)
# ------------------------------------------------------输出
<built-in function openssl_md5> 2c2af40d1744d151bf53c3f3829c77f4
<built-in function openssl_sha1> 421f739a6e56b6cd17e3a886ed699f74514258e6
<built-in function openssl_sha224> fcf853e2e45a13125c5cc67710bbeaec85f152d8e0cce757d327e5b1
<built-in function openssl_sha256> 2235fb55a1910bf90f95a090d91724ae1ef615a2020cea3bbe7841102ea2e10b
<built-in function openssl_sha384> d79926a62fcf8b1d12cb0206db50d13607ca8178df366b7a4c1f967dc501bacfebf853ae687d06d0710b05d417682fa5
<built-in function openssl_sha512> 96e6403117dca602dd5fc5659e56dd92634df3fdd06fcacd6abcaf32c3ad10fdc5a17860b903c0f8626f8f0ef078e5bd1cf71259fba68264e8db19bb61a13e67
  • 样例2
from hashlib import md5

m1 = hashlib.md5()    # 构造hash对象
m1.update('hello')
m1.update(' ')
m1.update('world!')  # 如果数据量很大, 可以很多次调用update方法
print m1.hexdigest()
m2 = hashlib.md5('hello world!')
print m2.hexdigest()

print m1.hexdigest() == m2.hexdigest()    # 两种方式的效果相同
#-------------------------------------------------------输出
fc3ff98e8c6a0d3087d515c0473f8677
fc3ff98e8c6a0d3087d515c0473f8677
True
  • 样例3: 使用 new(name, string="") 构造新的哈希对象
import hashlib
# 记住一定要是存在的hash算法,不能构造新的哈希对象
h = hashlib.new('ripemd160', 'hello world!')    # ripemd160是一个160位的hash算法. ripemd系列算法基于md4, md5.
print h.hexdigest()
#----------------------------------------------------------输出
dffd03137b3a333d5754813399a5f437acd694e5
hashlib 中的属性
  • hashlib.algorithms_guaranteed :列出所有平台支持的算法
  • hashlib.algorithms_available : 返回 python 可用的算法,可用于 new 函数构造 hash 对象
  • hash.digest_size :hash 函数返回结果的大小
  • hash.block_size :块大小
  • hash.name :所使用的 hash 函数的名字
  • hash.copy() :返回 hash 对象的拷贝
  • hash.hexdigest() :返回经过 hash 函数,映射后的十六进制的字符串
  • hash.digest() :返回经过 hash 函数,映射后的二进制的字节串
import hashlib
# 记住一定要是存在的
h = hashlib.new('ripemd160', 'hello world!')    # ripemd160是一个160位的hash算法. ripemd系列算法基于md4, md5.
print h.hexdigest()
#print h.digest()
print h.digest_size 
print h.block_size 
print h.name
print h.copy()
print hashlib.algorithms_guaranteed
print hashlib.algorithms_available
#------------------------------------------------------ 输出
dffd03137b3a333d5754813399a5f437acd694e5
20
64
ripemd160
<ripemd160 HASH object @ 0000000002A8B990>
set(['sha1', 'sha224', 'sha384', 'sha256', 'sha512', 'md5'])
set(['SHA1', 'SHA224', 'SHA', 'SHA384', 'ecdsa-with-SHA1', 'SHA256', 'SHA512', 'md4', 'md5', 'sha1', 'dsaWithSHA', 'DSA-SHA', 'sha224', 'dsaEncryption', 'DSA', 'ripemd160', 'sha', 'MD5', 'MD4', 'sha384', 'sha256', 'sha512', 'RIPEMD160', 'whirlpool'])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值