python之hashlib详解,附案例和计算文件哈希值算法
Python的hashlib模块提供了许多密码散列函数 , 如md5、sha1、sha224等等 。
密码散列函数定义密码散列函数通过哈希算法(又称摘要算法、散列算法)将任意长度的数据转换为一个固定长度的二进制数据(通常用16进制字符串表示) 。
文章插图
常见密码散列函数常见的密码散列函数有:md5是128位(32个字符)、sha1是160位(40个字符)、sha224(224位56个字符)、sha384(384位66个字符)、sha3_224(224位56个字符)、sha3_256(256位64个字符)、sha3_384(384位96个字符)、sha3_512(512位128个字符)、sha512(512位128个字符)、shake_128(128位32个字符)、shake_256(256位64个字符)等等 。
密码散列函数特点和作用密码散列函数的特点:通过哈希算法对任意长度的数据计算出固定长度的摘要 。 对相同的数据计算得出的摘要相同;对不同的数据计算得出的摘要不同(存在非常非常低概率不同数据得出相同摘要 , 简称碰撞);无法通过摘要还原数据 。 所以可通过对比摘要检查数据是否被篡改 。 密码散列的作用有:电子签名、防篡改、存储密码等等 。 另外:目前 MD5、SHA1 已经被证实存在隐患 , 更推荐使用sha2和sha3 。
文章插图
密码散列函数使用案例以下是sha2和sha3使用案例(请注意加盐用法 , 即对字符串计算哈希值之前添加干扰值 。 可以提高安全性和降低撞库的可能性):
import hashlibsha2 = hashlib.sha224()# 标准sha2用法sha2.update("Test sha2".encode("utf8"))print(sha2.hexdigest())sha2 = hashlib.sha224('eqwro'.encode('utf8'))# 加盐sha2用法sha2.update("Test sha2".encode("utf8"))print(sha2.hexdigest())sha3 = hashlib.sha3_224()# 标准sha3用法sha3.update("Test sha2".encode("utf8"))print(sha3.hexdigest())sha3 = hashlib.sha3_224('eqwro'.encode('utf8'))# 加盐sha3用法sha3.update("Test sha2".encode("utf8"))print(sha3.hexdigest())out:844e8c2c97312b6344377e49a412e2545e75a7b551f9551038a5f451a2cb1365509f141da28fe3935f7f6c8c6ef7b3fb347004f98d8b283cf92459c0c2ccc081e26d607b8fd39f804f6a57641446f6be01d4596fc2320f0da1a04385b1518fdeb69ddcdf34e5b25996447d2cfbb25f9f
python的hashlib模块中没有直接计算文件哈希值的方法 , 可以通过以下方法实现对文件计算哈希值 。
def sha3_file(file_path, s, buffers=1024):sha3 = hashlib.sha3_224(salt.encode('utf8'))with open(file_path, 'rb') as f:while data := f.read(buffers):sha3.update(data)return sha3.hexdigest()print(sha3_file('all1.jpg'))out:c88d28d070e6ec978b6d51814ca7e7c27b8a2bf26b58819826815d2c
文章插图
【python之hashlib详解,附案例和计算文件哈希值算法】另外在保存用户名、密码时建议将用户名存储成明文 , 方便查询用户名;密码存储为哈希值 , 提高安全性 。
- 纠结|硬杠红米Note9Pro?iQOO Z1跌至1575,对比之后纠结了!
- 王兴称美团优选目前重点是建设核心能力;苏宁旗下云网万店融资60亿元;阿里小米拟增资居然之家|8点1氪 | 美团
- 长安|长安傍上华为这个大腿,市值暴涨500亿!可见华为影响力之大?
- 巅峰|realme巅峰之作:120Hz+陶瓷机身+5000mAh 做到了颜值与性能并存
- 蛋壳公寓|官媒发声:绝不能让“割韭菜者”一跑了之!
- 看过明年的iPhone之后,现在下手的都哭了
- 直播销售员|石家庄桥西区插上“互联网+”智慧发展之翼
- 精英|业务流程图怎么绘制?销售精英的经验之谈
- 砍单|iPhone12之后,拼多多又将iPhone12Pro拉下水
- 报名啦!宿迁开展第五届“十大科技之星”评选