【问题标题】:In python3.7 hashlib, the results obtained from the same calculation twice are different在python3.7 hashlib中,同样计算两次得到的结果不同
【发布时间】:2020-04-13 02:25:42
【问题描述】:
import hashlib

# Create md5 object
md5 = hashlib.md5()
md5.update("Hello!".encode("utf-8"))
print(md5.hexdigest())  # out:952d2c56d0485958336747bcdd98590d

# No md5 object
hashlib.md5().update("Hello!".encode("utf-8"))
print(hashlib.md5().hexdigest())  # out:d41d8cd98f00b204e9800998ecf8427e

嗨!为什么两个输出不同?谁能告诉我为什么?谢谢!

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    这不是“相同的计算”:您打印“空” md5() 实例的 hexdigest() 并将其与修改后的 hexdigest() 进行比较。


    命令hashlib.md5() 返回一个md5() 实例。将其存储到变量中可以让您使用

    修改其内部状态
    md5 = hashlib.md5()
    md5.update("Hello!".encode("utf-8"))
    

    并产生与“空”输出不同的输出:

     # "empty" md5 object stored as variable and directly printed are identical
     md52 =  hashlib.md5()
     print(md52.hexdigest())           # out: d41d8cd98f00b204e9800998ecf8427e
     print(hashlib.md5().hexdigest())  # out: d41d8cd98f00b204e9800998ecf8427e
    

    使用

    hashlib.md5().update("Hello!".encode("utf-8"))
    

    创建一个md5() 实例并将其更新为不同的东西......然后将其丢弃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多