【问题标题】:sha256 result dosen't changesha256 结果不变
【发布时间】:2017-01-04 04:28:33
【问题描述】:

第一次使用 sha256。

使用此代码,结果始终等于4aa6892909e369933b9f1babc10519121e2dfd1042551f6b9bdd4eae51f1f0c2

怎么了?

def signning(self,D_path):
    BUF_SIZE = 65536 
    hashed = hashlib.sha256()

    with open(D_path, 'rb') as f:
        while True:
            data = f.read(BUF_SIZE)
            if not data:
                break
            hashed.update(data)

    hashed_D = hashed.hexdigest()
    print hashed_D

【问题讨论】:

  • 为什么要改变?相同的输入 = 相同的输出,否则你的散列函数会被破坏。
  • 您期望会发生什么?这是不同的文件还是每次都是同一个文件?
  • 不同的文件有不同的结果@Martijn Pieters
  • 无法复制。

标签: python python-2.7 sha256 sha


【解决方案1】:

是的,你的代码没有问题,这里有一个小例子表明 hashlib.sha256 是确定性的:

import random
import string
import hashlib

random.seed(1)

for i in range(5):
    data = ''.join(random.choice(string.ascii_uppercase + string.digits)
                   for _ in range(10))

    hashed = hashlib.sha256()
    hashed.update(data)
    print data, "->", hashed.hexdigest()

一遍又一遍地运行这个脚本,你会得到相同的输出,因为输入总是相同的;)

【讨论】:

  • 感谢回答,似乎这是一个愚蠢的问题:D
猜你喜欢
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 2021-02-03
  • 2013-04-13
相关资源
最近更新 更多