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

2024-09-28 19:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是,我真正想要的是,我想要接受那个散列密码,并且想要打印原始的明文。 (例如,如果我散列了一个密码(说普通密码是'password',散列密码是'hashd_password'),并将其与特定网站的UserID和电子邮件一起保存在数据库中,现在我想知道UserID和密码是什么。这样我就可以获得UserID(因为我不会散列它)但我只能获取散列密码(即“散列密码”),而不能获取我保存的真实密码(即“密码”)

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


Tags: 模块项目方法函数文本数据库密码网站
2条回答

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

简单地说,您无法从散列值中获取oraginal值

据我所知

我们散列密码,这样即使攻击者能够访问数据库,如果不使用暴力等技术获取密码,攻击者也无法获得密码。即,假设攻击者知道如何对密码进行哈希运算,则可以对密码字典进行哈希运算,并与数据库进行比较,以查看哪些密码匹配

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

就加密而言,它通常被用作另一层。例如,可以在散列之前使用加密,然后对加密密码进行散列。这样,即使攻击者输入正确的密码,并且仅对该密码进行哈希运算,攻击者在比较哈希运算时也不会正确获得密码

相关问题 更多 >