以下代码以Python3.6.1为例
- hashlib : 不可逆加密
- hmac : 不可逆键值对方式加密
hashlib模块简介:
hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 信息摘要算法(Message Digest Algorithm)实现了一个公共的、通用的接口,也可以说是一个统一的入口。因为hashlib模块不仅仅是整合了md5和sha模块的功能,还提供了对更多中算法的函数实现,如:MD5,SHA1,SHA224,SHA256,SHA384和SHA512。
hashlib模块使用步骤:
1)获取一个哈希算法对应的哈希对象(比如名称为hash): 可以通过 hashlib.new(哈希算法名称, 初始出入信息)函数,来获取这个哈希对象,如hashlib.new('MD5', 'Hello'),hashlib.new('SHA1', 'Hello')等;也可以通过hashlib.哈希算法名称()来获取这个哈希对象,如hashlib.md5(), hashlib.sha1()等。
2)设置/追加输入信息: 调用已得到哈希对象的update(输入信息)方法可以设置或追加输入信息,多次调用该方法,等价于把每次传递的参数凭借后进行作为一个参数垫底给update()方法。也就是说,多次调用是累加,而不是覆盖。
3)获取输入信息对应的摘要: 调用已得到的哈希对象的digest()方法或hexdigest()方法即可得到传递给update()方法的字符串参数的摘要信息。digest()方法返回的摘要信息是一个二进制格式的字符串,其中可能包含非ASCII字符,包括NUL字节,该字符串长度可以通过哈希对象的digest_size属性获取;而hexdigest()方法返回的摘要信息是一个16进制格式的字符串,该字符串中只包含16进制的数字,且长度是digest()返回结果长度的2倍,这可用邮件的安全交互或其它非二进制的环境中。
#!/usr/bin/env python # coding=utf-8 __author__ = 'Luzhuo' __date__ = '2017/5/19' # hash_demo.py Hash加密相关(安全哈希) # 支持: MD5, SHA1 SHA224 SHA256 SHA384 SHA512 import hashlib def hash_demo(): m = hashlib.md5() m.update(b"hello") m.update(b"world!") # = hello + world! hash_hex = hashlib.sha3_512(b"luzhuo.me").hexdigest() print(m.digest_size) print(m.digest()) # 二进制hash print(m.hexdigest()) # 十六进制hash print(hash_hex) # 加盐加密 hash_bytes = hashlib.pbkdf2_hmac('sha256', b'luzhuo.me', b'80', 100000) print(hash_bytes) def hash_func(): # hashlib.new(name[, data]) // 创建hashlib(非首选), name=算法名, data:数据 hash = hashlib.new('ripemd160', b'luzhuo.me') # 常量 dics = hashlib.algorithms_guaranteed # 所有平台支持的hash算法的名称 dics = hashlib.algorithms_available # 在Python解析器中可用的hash算法的名称, 传递给new()时, 可识别 # hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None) // 加盐加密 hash_name:hash名称, password:数据, salt:盐, iterations:循环次数, dklen:密钥长度 hash_bytes = hashlib.pbkdf2_hmac('sha256', b'luzhuo.me', b'80', 100000) # hash对象 num = hash.digest_size # hash结果的大小 num = hash.block_size # hash算法的内部块的大小 strs = hash.name # hash名称, 可传给new()使用 hash.update(b"data") # 字节缓冲区 hash.update(a) hash.update(b) == hash.update(a+b) hash_bytes = hash.digest() # 字节hash hash_str = hash.hexdigest() # 16进制字符串hash hash = hash.copy() # 拷贝hash对象副本 if __name__ == "__main__": hash_demo() # hash_func()
hashmac模块简介:
前面说过,HMAC算法也是一种一种单项加密算法,并且它是基于上面各种哈希算法/散列算法的,只是它可以在运算过程中使用一个密钥来增增强安全性。hmac模块实现了HAMC算法,提供了相应的函数和方法,且与hashlib提供的api基本一致。
hmac模块使用步骤:
hmac模块模块的使用步骤与hashlib模块的使用步骤基本一致,只是在第1步获取hmac对象时,只能使用hmac.new()函数,因为hmac模块没有提供与具体哈希算法对应的函数来获取hmac对象。
#!/usr/bin/env python # coding=utf-8 __author__ = 'Luzhuo' __date__ = '2017/5/19' # hmac_demo.py HMAC算法 # 与hashlib不同之处在于多了key import hmac def hmac_demo(): # 加密 h = hmac.new(b"net") h.update(b"luzhuo.me") h_str = h.hexdigest() print(h_str) # 比较密码 boolean = hmac.compare_digest(h_str, hmac.new(b"net", b"luzhuo.me").hexdigest()) print(boolean) def hmac_func(): # 创建key和内容,再都进行加密 # hmac.new(key, msg=None, digestmod=None) // 创建新的hmac对象, key:键, msg:update(msg), digestmod:hash名称(同hashlib.new())(默认md5) hc = hmac.new(b"key") # hmac对象 hc.update(b"msg") # 字节缓冲区 hc.update(a) hc.update(b) == hc.update(a+b) hash_bytes = hc.digest() # 字节hash hash_str = hc.hexdigest() # 16进制hash字符串 hc = hc.copy() # 拷贝hmac副本 num = hc.digest_size # hash大小 num = hc.block_size # hash算法内部块大小 strs = hc.name # hash名称 # hmac.compare_digest(a, b) // 比较两个hash密钥是否相同, 参数可为: str / bytes-like object, (注:建议使用,不建议使用a==b) boolean = hmac.compare_digest(hmac.new(b"net", b"luzhuo.me").digest(), hmac.new(b"net", b"luzhuo.me").digest()) if __name__ == "__main__": hmac_demo() # hmac_func()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 2019明达发烧碟MasterSuperiorAudiophile[WAV+CUE]
- 蔡幸娟.1993-相爱容易相处难【飞碟】【WAV+CUE】
- 陆虎.2024-是否愿意成为我的全世界【Hikoon】【FLAC分轨】
- 关淑怡.2009-ERA【星娱乐】【WAV+CUE】
- 林忆莲《关于她的爱情故事》2022新世纪MQA 24K金碟限量版[WAV+CUE]
- 张雨生1993《一天到晚游泳的鱼》台湾G字首版[WAV+CUE][1G]
- 群星《试音五大女声》[WAV+CUE][1G]
- 魔兽世界wlk武器战一键输出宏是什么 wlk武器战一键输出宏介绍
- 魔兽世界wlk狂暴战一键输出宏是什么 wlk狂暴战一键输出宏介绍
- 魔兽世界wlk恶魔术士一键输出宏是什么 wlk恶魔术士一键输出宏介绍
- 医学爱好者狂喜:UP主把医学史做成了格斗游戏!
- PS5 Pro评分解禁!准备升级入手吗?
- 我们盘点了近期火热的国产单机游戏!《琉隐神渡》等 你期待哪款?
- 2019年第12届广州影音展双碟纪念版ADMS2CD[MP3/WAV]
- 黄安《救姻缘》台首版[WAV+CUE]