【发布时间】:2020-05-13 00:27:29
【问题描述】:
我正在尝试使用 bcrypt(在 python 中)为 2 个更长的不同字符串创建哈希
这适用于较短的字符串(如"a" 和"b"),但是当我使用相同开头的长字符串时,它会返回相同的哈希值。
我应该提一下,两个字符串的盐值保持不变。
import bcrypt
hash_msg1 = b"1 b'$2b$12$kknL1S6HaV1/DyNiHhV/ue9SPIOAx.qY2iE33QS8.pi8jM0gvZ53a' {'him': -120, 'me': 100}"
hash_msg2 = b"1 b'$2b$12$kknL1S6HaV1/DyNiHhV/ue9SPIOAx.qY2iE33QS8.pi8jM0gvZ53a' {'him': -1, 'me': 1}"
salt = bcrypt.gensalt()
hash1 = bcrypt.hashpw(hash_msg1, salt)
hash2 = bcrypt.hashpw(hash_msg2, salt)
if hash1 == hash2:
print('Hash is the same')
else:
print('It works')
这会打印“哈希相同”
我尝试使用另一个名为 rsa 的库,您可以在其中使用 rsa.compute_hash(message, 'SHA-256')。
我用这 2 条消息尝试过,它有效,但我想知道如何使用 bcrypt 来做到这一点。
(虽然我还应该提到 rsa 库中的哈希不使用任何盐,但我可以简单地将盐作为字符串添加到主字符串的末尾)
似乎有最大字符数限制,但我想知道我怎样才能让它工作。
【问题讨论】:
-
the recommended workaround 不起作用吗?
-
@HeapOverflow 确实如此,我没注意到GitHub上有发布的解决方法,谢谢。