【发布时间】:2022-11-24 11:16:52
【问题描述】:
问题
我写了一个函数来签署上传的文件。为了增加功能的安全性,我想给它添加一个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 和预期结果吗?你可以做简单的
SHA256.new(file.read() + SALT.encode()) -
h.update()就地操作,它不返回新的哈希值。 -
在此用例中添加盐如何提高安全性?
-
基本上,由于文档将公开,因此更难伪造相同的文档散列。但在最好的情况下,没有人会得到 SALT。
-
我高度怀疑添加盐会使伪造 SHA256 变得更难...... SHA256 的完整目的是防止这种情况发生,而盐通常用于避免重复的密码哈希,以防两个帐户使用相同的密码。它有一个完全不同的目的。
标签: python encryption sign