使用 python 中的唯一键散列字符串的安全性

Security of hashing a string using unique key in python

我想要一种使用唯一密钥散列电子邮件(只是地址)的方法。所以流程将是下一个:

现在,我知道 hashlib 及其基本实现:

import hashlib

email = 'email@domain.com'
key = '1234'
hash_object = hashlib.sha256(email)
print(key + hash_object.hexdigest())

现在,我不知道这个实现有多安全,因为它总是在我的哈希前面添加 key

我的愿望是拥有一个唯一的密钥(将存储在某个地方),并始终使用它对电子邮件进行哈希处理。而且,我不想解码那个哈希。我只是对编码感兴趣。

有什么想法吗?

在您的散列 前面添加一个键没有任何作用。它不会提高安全性,因为您正在散列普通密码(没有加盐),因此很容易被暴力破解。

你想要的是随机添加一个。然后你可以进行以下操作

import random, hashlib
from string import ascii_letters

salt= ''.join(random.shuffle(ascii_letters))
hash=hashlib.sha512(salt+':'+password).hexdigest()

当然,您的目标是在密码的前面或末尾添加随机字母组合,因此您可以通过任何其他方式生成它,不一定要 shuffle 整个字母表。