MD5算法:利用python进行md5 hash值的获取

MD5基本概念

MD5,即信息摘要算法,英文为MD5 Message-Digest Algorithm,是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),也叫散列值,用于确保信息传输完整一致。
它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串,这个特殊的字符串就被称之为摘要。

MD5的作用

通常用于校验一组数据是否被篡改。例如,校验一个文件是否被篡改。

MD5特点及现状:

1)、hash值长度固定。它是一段固定长度的数据,即16个字节(128bit)。无论原始数据是多长或多短,其MD5值都是128bit。

2)、通常,计算出来的md5值包含0~9和大小写字母a ~ f, 以及A ~ F的32位可见字符。即将128bit的数据打印输出时,是一个32位的字符串。(因为直接输出16bytes的数据,是乱码,不可见)。

3)、hash值的确定性,一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5值。

4)、碰撞性,原始数据与其MD5值并不是一一对应的,有可能多个原始数据计算出来的MD5值是一样的,这就是碰撞。

5)、不可逆。即由已知的MD5值,无法还原出它的原始数据的。当然,很多网站可以查询md5的原始数据,是因为事先已经保存了数以万计的原始数据以及它的hash值,我们查询时,只是进行已知数据的查询匹配。

由于hash算法是不可逆的, 所以不存在解密的逻辑。

6)、不安全。由于md5无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

7)、我国著名教授王小云已经破解了包括MD5、SHA-1在内的5个国际通用哈希函数算法。

MD5值的获取:

很多平台自带md5值的获取,例如,可以用下面的命令计算一个文件的md5值:

% md5 urlinfo.json 
MD5 (urlinfo.json) = e58b910fda6a2aed3d00fde20a28c0a7

MD5值的获取:python代码:

1、 不加盐(salt)的md5值

利用python获取md5值的代码如下:

from hashlib import md5

obj = md5()
obj.update("hello python!!!".encode("utf-8"))

bs = obj.hexdigest()
print(bs)

运行结果:

% python3 md5_test.py
ffd986dc69195bd6c1397a76e0df6cc4

用在线网站进行md5值的获取:
在这里插入图片描述
可以看到,和我们用python算出的结果一样。

2、 加盐(salt)的md5值

from hashlib import md5
salt = "aabbccddeeff"
obj = md5(salt.encode("utf-8"))  # 加盐
obj.update("hello python!!!".encode("utf-8"))

bs = obj.hexdigest()
print(bs)

运行结果:

% python3 md5_test.py
355d1341087e44f53551293193fd706c

3、 扩展sha256的md5值

from hashlib import sha1, sha256
sha = sha256(b'salt')
sha.update(b'hello python!!!')
print(sha.hexdigest())

运行结果:

python3 md5_test.py
24d50be77cb3d092520041983964d9f5daa8962c19f4fb6318bd2764406aab64

说明:不论是sha1, sha256, md5都属于摘要算法.,都是在计算hash值(散列值),只是散列的程度不同而已。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值