我想设置一个系统,允许我将加密密码(散列密码)从一个系统迁移到另一个系统。我该怎么做呢?
再过2个月,我发现了一种比现在好10倍的加密方法,并且当前的散列函数毫无疑问是完全易受攻击的。如何将用户密码从一种哈希类型迁移到另一种哈希类型(更好的哈希)。
发布于 2012-01-01 17:53:10
您可以使用以下技术从一种方法慢慢迁移到另一种方法。我不能保证它的质量,所以请持保留态度(不是双关语)。
例如,考虑以下存储用户的表:
id name password salt hashmethod
--------------------------------------------
1 alice ABC52... ABD... md5
2 bob 28DHF... Z+d... sha1
...假设您过时的散列方法是md5,并且您希望用更安全的sha1替换它,您可以这样做:
用户。
此迁移可能需要很长时间,因此为了加快迁移速度,您应该向用户发送电子邮件,要求他们登录或更改密码。
希望能有所帮助。
发布于 2012-01-01 17:39:28
一般来说,你不能。你不能从散列中恢复密码;这就是散列的全部要点。如果原来的哈希函数已经损坏,您可以恢复密码,那么您也可以这样做,然后用新函数对它们进行哈希运算。
发布于 2012-01-01 17:48:58
通常,执行此操作的方法如下所示:
1)生成公钥/私钥对,通常使用RSA。
2)确保私钥的安全。你永远不会,永远不会把它存储在网上。(您可能希望将其一分为二,并将其信任给不同的人。您可能想要使用安全的秘密共享。您可能希望将其保护在令牌中。)
3)每当您存储密码时,您还会存储一份使用您生成的公钥加密的副本。
4)如果将来需要恢复明文密码,您可以恢复私钥并解密存储的密码副本。
请注意,这是您如何执行此操作的技术描述。你怎么做是安全的是复杂的,取决于你的实际情况。例如,您必须考虑攻击者将您的公钥替换为自己的公钥的威胁模型。
https://stackoverflow.com/questions/8692561
复制相似问题