如何从 Python 中的文件中生成哈希值
How to salt a generated hash from a file in Python
问题
我编写了一个函数来对上传的文档进行签名。为了增加函数的安全性,我想给它加一个SALT。当我读取上传文件的字节时,我想我必须以某种方式添加或附加它?
代码
这是我目前拥有的没有 SALT 的(工作)功能:
def sign(file):
with open(private_key_path, 'rb') as f:
key = f.read()
hash = SHA256.new(file.read())
# do signing stuff
return signature
之后我尝试更新散列,但那不起作用:
SALT = "random string";
def sign(file):
with open(private_key_path, 'rb') as f:
key = f.read()
h = SHA256.new(file.read())
hash = h.update(str.encode(SALT))
# do signing stuff
return signature
我该如何解决这个问题?有没有合适的标准方法来做到这一点?
试试这个:
SALT = "random string";
def sign(file):
with open(private_key_path, 'rb') as f:
key = f.read()
hash = SHA256.new(file.read())
hash.update(str.encode(SALT))
# do signing stuff
return signature
根据hashlib官方文档:
hash.update(data)
updates the hash object with the bytes-like object (data).
这意味着SHA256.new()
实际上创建了一个python对象,而.update()
是这个python对象的一个方法,它更新对象的属性。它没有 return 任何东西,因此不会将任何内容存储在第二个代码的 hash
变量中。
要了解更多信息,请查看此answer。
问题
我编写了一个函数来对上传的文档进行签名。为了增加函数的安全性,我想给它加一个SALT。当我读取上传文件的字节时,我想我必须以某种方式添加或附加它?
代码
这是我目前拥有的没有 SALT 的(工作)功能:
def sign(file):
with open(private_key_path, 'rb') as f:
key = f.read()
hash = SHA256.new(file.read())
# do signing stuff
return signature
之后我尝试更新散列,但那不起作用:
SALT = "random string";
def sign(file):
with open(private_key_path, 'rb') as f:
key = f.read()
h = SHA256.new(file.read())
hash = h.update(str.encode(SALT))
# do signing stuff
return signature
我该如何解决这个问题?有没有合适的标准方法来做到这一点?
试试这个:
SALT = "random string";
def sign(file):
with open(private_key_path, 'rb') as f:
key = f.read()
hash = SHA256.new(file.read())
hash.update(str.encode(SALT))
# do signing stuff
return signature
根据hashlib官方文档:
hash.update(data)
updates the hash object with the bytes-like object (data).
这意味着SHA256.new()
实际上创建了一个python对象,而.update()
是这个python对象的一个方法,它更新对象的属性。它没有 return 任何东西,因此不会将任何内容存储在第二个代码的 hash
变量中。
要了解更多信息,请查看此answer。