Python 如何从散列文本中获取明文?

Python 如何从散列文本中获取明文?,python,hash,bcrypt,Python,Hash,Bcrypt,所以,我正在进行一个项目,在这个项目中,我将密码存储在mongoDB中,并使用Python。pythondo有一个bcrypt内置模块,它允许我们散列明文。现在,我可以散列一个密码并将散列后的密码存储在数据库中。酷。我是否想知道保存的密码(保存在数据库中的哈希密码)是否与给定的密码相同。(即,如果我将密码“password”散列并保存在数据库中,bcrypt允许我们比较散列密码和普通密码,以检查它们是否相同)我可以使用一些内置函数进行检查 但是,我真正想要的是,我想要接受那个散列密码,并且想要打

所以,我正在进行一个项目,在这个项目中,我将密码存储在mongoDB中,并使用Python。pythondo有一个bcrypt内置模块,它允许我们散列明文。现在,我可以散列一个密码并将散列后的密码存储在数据库中。酷。我是否想知道保存的密码(保存在数据库中的哈希密码)是否与给定的密码相同。(即,如果我将密码“password”散列并保存在数据库中,bcrypt允许我们比较散列密码和普通密码,以检查它们是否相同)我可以使用一些内置函数进行检查

但是,我真正想要的是,我想要接受那个散列密码,并且想要打印原始的明文。 (例如,如果我散列了一个密码(比如普通密码是‘密码’,散列密码是‘散列密码’),并将其与特定网站的用户ID和电子邮件一起保存在数据库中,现在我想知道用户ID和密码是什么。因此我可以获得用户ID(因为我不会散列),但我只能获得散列密码(即“哈希密码”)而不是我保存的真实密码(即“密码”)


我希望你能理解我的问题并给我一个解决方案。总之,有没有办法从散列文本中获取明文(即原始文本),或者我应该使用任何其他方法来获取明文(如加密或其他方法)。

在将密码保存到数据库之前对密码进行散列的全部目的是,其他人不应该看到(计算)数据库中的原始密码

简单地说,你无法从散列值中获得原始值。

据我所知

我们对密码进行散列,这样即使攻击者能够访问数据库,如果不使用暴力等技术获取密码,攻击者也无法获得密码。也就是说,假设攻击者知道如何对密码进行散列,则可以对密码字典进行散列,并与数据库进行比较,以确定需要哪些密码ch

现在,如果你想反转散列,我很确定,除了你尝试上面解释的暴力方法之外,这是不可能的。我们不能反转散列,只能通过给出密码来猜测


在加密方面,它通常被用作另一层。例如,你可以在散列之前使用加密,然后对加密密码进行散列。这样,即使攻击者输入正确的密码,并且只对该密码进行散列,攻击者在比较散列时也不会正确获取密码。

不,对不起,我不明白你的意思在以后检索普通密码的动机。大多数情况下不需要。唯一可行的方法是在实现密码管理器时。在这种情况下,不要散列密码,而是使用从主密码派生的密钥加密整个数据库。