检索密码时,密码存储为一个哈希值(Retrieving password when the pass

2019-06-23 14:51发布

用户可以请求他们的密码通过电子邮件发送给自己,如果密码被存储为哈希值?

有没有什么办法的哈希值转换为明文值用正确的信息(你需要什么样的信息)?

如果用户存储在两个网站使用同一个密码的哈希值,将其密码是为这两个网站一样吗?

Answer 1:

如果你只存储密码的哈希值,则没有。 ...你应该只存储密码的正确盐渍哈希,反正。

密码重置机制是正确的选择。



Answer 2:

哈希密码不能在一般的检索(这取决于哈希函数,安全混编无法检索)。 如果他们有两个网站相同的哈希,他们可以有相同的密码,这取决于该网站所使用的散盐,有什么方法等。

如果您的密码安全地存储在一个良好的散列系统,供应商应该永远无法向您发送电子邮件密码,您必须,如果你忘记它重置您的密码。



Answer 3:

总之,没有。 对于大多数的哈希算法,您可以与相同输出的多个输入。 它往往是更好地提供了一个密码重置选项。



Answer 4:

有不同类型的哈希算法。 有些人比其他人更安全。 MD5是一种流行,但不安全的。 该SHA-家庭是另一种更安全的一套算法。

根据定义,哈希是一个单向函数。 它不能被逆转。

http://en.wikipedia.org/wiki/Sha-1



Answer 5:

如果有恢复明文密码一个简单的方法,就在哈希开始与密码是没有意义的。 在这一点上,你可能也只是一个base64或ROT13他们。 (不这样做!)

正如其他人所提到的,使用其他的密码恢复方法。 真的是从来没有一个很好的理由来访问明文密码。

如果在两个站点哈希是一样的,用户最有可能具有在两个相同的密码。 但是,并不是100%保证,有可能是一个哈希冲突,但这是不可能的巨大。



Answer 6:

有没有办法扭转常用的哈希值。 它们可以bruteforced(尝试每一个可能的口令),也可以使用组合的词表(使用常用的密码列表),以蛮力来加速它的一些,但它仍然是一个非常缓慢和CPU密集型的过程。

最好的办法,其中许多网站使用,它创造了“密码重置”按钮,在这里你输入你的用户名和电子邮件,如果他们匹配,它向您发送一个随机密码,并给你一个链接到登录页面,您可以登录与你的随机密码并更改密码。



Answer 7:

要做到这一点,你必须有一个领域的模型:

Hashed_password
Salt

而你需要知道的方法,用户哈希密码(这里我使用SHA1),然后你就可以在你的控制器定义:

def self.encrypted_password(password, salt)
   string_to_hash = password + "wibble" + salt
   Digest::SHA1.hexdigest(string_to_hash)
end

接下来,你可以比较一下:

user.Hashed_password == encrypted_password(password, user.salt)

真正的意思是“口令”是用户“用户”的口令



Answer 8:

后面存储密码的哈希的总体思路是,以确保密码是安全的......甚至那些谁拥有对数据库的访问。 信任是永远不会隐。 哈希是一种单向算法,所以没有办法从一个哈希码得到原来的密码。 通常情况下,当用户需要恢复被存储为哈希密码,你应该问他们自己的秘密问题,要么给他们发电子邮件他们的临时密码,或通过电子邮件发送给一个临时链接,他们可以更改其密码。 这确保了密码从不存储明文,并从所有窥探,即使是那些谁可能会被认为是值得信赖的安全。



文章来源: Retrieving password when the password stored as a hash value