0

我正在从用户那里获取密码输入,并计划使用 passlib.hash 库来加密密码。

我能够成功加密密码,并且他们的文档说明了验证功能的使用,但是我想找出输入的原始密码,有可能吗?

例如: 用户输入密码:abcd 使用 passlib 对变量哈希加密的密码 如何解密密码哈希并获取 abcd 值?

请参阅下面的示例代码:

    print "Enter a password "
    passw = raw_input()
    print "password entered is ", passw
    hash = sha256_crypt.encrypt(passw)
retrivepass=?

可以找回原来的密码吗?如果不是最好的选择是什么?提前致谢

4

3 回答 3

0

可以找回原来的密码吗?

不会。密码散列函数的目的是让您可以在不实际存储用户密码的情况下验证用户身份。

散列函数是单向的,因此给定输出,您无法推断输入是什么。可以把它想象成将两个数字相加。你知道 2 + 2 = 4,但是给定 4,你无法计算出两个相加的数字是 2 和 2。

如果不是最好的选择是什么?

您很可能不需要加密。你需要一个好的密码散列函数,比如 Bcrypt 或 PBKDF2。

于 2013-09-08T05:34:45.993 回答
0

然后在用户想要访问时存储哈希:

valid = False
while not valid:
    passw = raw_input("Enter your password")
    valid = sha256_crypt.verify(passw, hash)
于 2013-09-08T05:40:13.160 回答
0

散列是对标准数据块进行加密的过程,通常会产生相同长度的输出,甚至是无限长的输入。SHA256将输入数据编码为 256 位输出数据。

您始终可以散列密码并存储它。但是密码无法找回。理想的方法是再次获取密码,对其进行哈希处理,并将其与存储的哈希值进行比较。

于 2013-09-08T05:42:00.643 回答