如果我没记错的话,该方法是使用 SHA1 标准散列您的密码。
散列是一种特殊类型的单向加密。意思是you can't decrypt it。
我假设您想要解密它以便根据登录表单检查某人的密码。处理的方法是存储加密的密码;然后当有人填写您的表单时,使用相同的加密方法对其输入进行加密,并查看两个加密字符串是否匹配。
附带说明,如果您正在散列,请不要忘记给您的散列加盐。这将要求您将哈希和盐存储在数据库中;检查密码时,只需检索与输入的用户名关联的盐,将其添加到表单输入的密码中,对其进行散列,然后将新散列与存储的加盐的散列核对。如果他们匹配,宾果!如果不是,那就是密码错误。
更多...
查看类似问题的其他答案,为了完整起见,让我添加这个。
这个问题的简短回答是否。这些散列算法被设计为“不可破解”。然而,这并不意味着它们不能被破坏。破解 SHA1 或任何其他基于模数的散列算法的方法是“猜测和检查”。基本上:
- 输入密码
- 如果它是正确的,那就太好了!你进来了!
- 如果不正确,请转到1。
就像您遇到的任何其他密码系统一样,破解它的方法是暴力破解。你可以想象有很多程序就是为了做到这一点而设计的。散列算法的问题在于它们对相同的输入产生相同的结果。由于您使用的是 SHA1,这是数百万其他应用程序使用的标准库,我可以向您保证,如果您使用它,普通的 SHA1 可以并且将会被破坏。
解决这个问题的方法是使用加盐,如上所述。这会更改每个用户的特定密码的输入;这意味着如果三个用户都具有相同的密码,例如“密码”,则每个用户的密码都将作为不同的结果存储在数据库中。
如果它们在没有盐的情况下通过 sha1,它们都会是相同的,因为您输入的是相同的输入:
password ---SHA1---> sha1$asdfasdfasdfasdf
password ---SHA1---> sha1$asdfasdfasdfasdf
password ---SHA1---> sha1$asdfasdfasdfasdf
因此,如果有人访问了您的数据库,他们可以查找重复的密码并针对他们检查常用密码,直到他们意识到 sha1$asdfasdfasdfasdf 实际上意味着“密码”。
但是通过在等式中添加盐,每个用户本质上都在输入不同的密码
salt1password ---SHA1---> sha1$aogiahowehgpa
salt2password ---SHA1---> sha1$oh9h42h980agh
salt3password ---SHA1---> sha1$322tyyha0gh9w
这使您的系统几乎不可能被破解。如果有人可以访问您的数据库,则不会有重复项要检查。
所以总是给你的哈希加盐!