使用python

时间:2015-09-16 05:10:24

标签: python encryption hash hashlib

我喜欢使用唯一键散列电子邮件(只是地址)的方法。所以流程将是下一个:

  • 我收到了一个电子邮件地址。
  • 我正在使用该密钥(连同散列算法)来散列电子邮件,然后将该散列存储在数据库中
  • 如果同一封电子邮件尝试登录,则会应用相同的哈希方法,但它将与数据库中的现有方法匹配。如果它是新电子邮件,请再次将数据存储在数据库中,依此类推。

现在,我了解hashlib及其基本实现:

import hashlib

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

在哈希前添加密钥不会做任何事情。它不会提高安全性,因为你没有使用普通密码(没有盐),所以它很容易暴力破解。

你想要的是添加一个随机 salt 。然后你可以做以下

import random, hashlib
from string import ascii_letters

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

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