python3 Hash生成 检验文件完整性

python3 Hash生成 检验文件完整性

哈希算法介绍来自https://blog.csdn.net/hulinku/article/details/78934329

哈希算法

★散列算法(哈希算法)

◇什么是”散列算法/哈希算法”?

这里所说的”散列”是一种计算机算法,洋文叫做 Hash,有时候也根据音译称为哈希。
  散列算法可以把任意尺寸的数据(原始数据)转变为一个固定尺寸的”小”数据(叫”散列值”或”摘要”)。

◇摘要长度

对于某个具体的散列算法,得到的散列值长度总是固定的。散列值的长度又称”摘要长度”。
  以下是常见散列算法的摘要长度
CRC32 32比特(4字节)
MD5 128比特(16字节)
SHA1 160比特(20字节)

◇散列算法的特色

1. 不可逆性
  从刚才的描述看,散列似乎有点像压缩。其实捏,散列算法跟压缩算法是完全不同滴。压缩算法是可逆的(可以把压缩后的数据再还原),而散列算法是不可逆的。
  还有一些人把散列算法称为”加密算法”,这也是不对的。因为加密算法是可逆的(”加密”的逆操作就是”解密”),而散列算法是不可逆的。

2. 确定性
  通过某种散列算法,分别对两个原始数据计算散列值。如果算出来的散列值不同,那么可以 100% 肯定这两段数据是不同的——这就是”确定性”。
  但反过来,如果这两段数据的散列值相同,则只能说,这两段数据非常可能相同。所谓的”非常可能”,就是说,还达不到百分百。具体原因,请看下一节”散列函数的可靠性”。

以下内容来自https://www.cnblogs.com/li134655/p/7687790.html

Python3中的hashlib模块

Python3中的hashlib模块提供了多个不同的安全哈希算法的通用接口

hashlib模块代替了Python2中的md5和sham模块,使用这个模块一般分为3步

1.创建一个哈希对象,使用哈希算法命名的构造函数或通用构造函数hashlib.new(name[, data])

2.使用哈希对象调用update()方法填充这个对象

3.调用digest() 或 hexdigest()方法来获取摘要(加密结果)

注:

1.update()方法需要接收的参数是一个字节对象(字节字符串,如:b"Hello,World!")

2.常用的一些算法主要有: SHA1, SHA224, SHA256, SHA384, SHA512, MD5等算法

3.SHA1算法比较早,是不能抵抗暴力破解的

hashlib模块提供一下常量属性

hashlib.algorithms_guaranteed

获取保证在所有平台上此模块支持的哈希算法名称的集合

hashlib.algorithms_available

获取可以运行在Python解释器中的哈希算法名称的集合

哈希对象常用的方法

h = hashlib.md5() 或 h = hashlib.new(“md5”) # md5可以替换为其他的哈希类型

h.update(arg)

将字节对象arg填充到哈希对象中,arg通常为要加密的字符串

h.digest()

返回加密结果,它是一个字节对象,长度为 h.digest_size,包含的字节范围 0 ~ 255

h.hexdigest()

返回加密结果,它是一个字符串对象,长度为 h.digest_size * 2,只包含16进制数字

Python3 File read() 方法

read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。

部分代码

import hashlib
try:
f = open(地址,‘rb’)
a = f.read()
finally:
if f:
f.close()
m = hashlib.md5()
m.update(a)
print(m.hexdigest())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值