两次MD5加密的值不一致

前提:

今天在爬取一个网页文章保存到数据库的时候,用了文章的链接进行MD5加密作为id。再次调用时会根据id是否存在判断是否存入数据库。

但再次调用后发现相同的文章又存入数据库了,仔细查看后发现id竟然不一样!

开始找问题

做了个测试,创建了一个MD5对象进行多次调用

import hashlib

message = "Hello, World!"

# 创建MD5对象
md5_hash = hashlib.md5()

md5_hash.update(message.encode('utf-8'))
md5_result_1 = md5_hash.hexdigest()

md5_hash.update(message.encode('utf-8'))
md5_result_2 = md5_hash.hexdigest()

md5_hash.update(message.encode('utf-8'))
md5_result_3 = md5_hash.hexdigest()


print("第一次MD5结果:", md5_result_1)
print("第二次MD5结果:", md5_result_2)
print("第三次次MD5结果:", md5_result_3)

 测试结果

发现三次MD5结果都不一样!!!

这次创建了三个MD5对象,开始运行

import hashlib

message = "Hello, World!"

# 创建第一个MD5对象
md5_hash = hashlib.md5()
md5_hash.update(message.encode('utf-8'))
md5_result_1 = md5_hash.hexdigest()

# 创建第二个MD5对象
md5_hash = hashlib.md5()
md5_hash.update(message.encode('utf-8'))
md5_result_2 = md5_hash.hexdigest()

# 创建第三个MD5对象
md5_hash = hashlib.md5()
md5_hash.update(message.encode('utf-8'))
md5_result_3 = md5_hash.hexdigest()


print("第一次MD5结果:", md5_result_1)
print("第二次MD5结果:", md5_result_2)
print("第三次次MD5结果:", md5_result_3)

结果竟然又一样!!!

这次尝试了如下代码,发现结果也是一样

import hashlib

message = "Hello, World!"

# 创建MD5对象
md5_hash = hashlib.md5()
md5_hash.update(message.encode('utf-8'))

md5_result_1 = md5_hash.hexdigest()

md5_result_2 = md5_hash.hexdigest()

md5_result_3 = md5_hash.hexdigest()


print("第一次MD5结果:", md5_result_1)
print("第二次MD5结果:", md5_result_2)
print("第三次次MD5结果:", md5_result_3)

 

总结

每次调用md5_hash.update(message.encode('utf-8'))会在原有哈希结果的基础上进行更新,而不是重新计算整个消息。

这意味着,如果你多次调用update()方法并提供相同的输入数据,每次调用都会在当前哈希结果的基础上进行更新,导致最终的哈希值不同。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值