我正在从用户那里获取密码输入并计划使用passlib.hash库来加密密码。
我能够成功加密密码,他们的文档说明了验证功能的使用情况,但是我想找出输入的原始密码,是否可以?
例如: 用户输入了密码:abcd 使用passlib将密码加密到变量哈希 如何解密密码哈希并获得值abcd?
请参阅下面的示例代码:
print "Enter a password "
passw = raw_input()
print "password entered is ", passw
hash = sha256_crypt.encrypt(passw)
retrivepass=?
是否可以检索原始密码?如果不是最好的选择? 提前致谢
答案 0 :(得分:0)
是否可以检索原始密码?
没有。密码散列函数的目的是使您可以在不实际存储密码的情况下对用户进行身份验证。
哈希函数是单向的,因此在给定输出的情况下,您无法推断输入是什么。可以把它想象成两个数字。你知道2 + 2 = 4,但是给出4,你无法弄清楚加在一起的两个数字是2和2。
如果不是最佳选择?
您很可能不需要加密。您需要一个良好的密码散列函数,如Bcrypt或PBKDF2。
答案 1 :(得分:0)
当用户想要访问时,存储哈希:
valid = False
while not valid:
passw = raw_input("Enter your password")
valid = sha256_crypt.verify(passw, hash)
答案 2 :(得分:0)
散列是加密标准数据块的过程,通常会产生相同的输出长度,输入甚至无限长。 SHA256
将输入数据编码为256位输出数据。
您始终可以对密码进行哈希并存储。但无法检索密码。理想的方法是再次获取密码,哈希,并将其与存储的哈希值进行比较。