首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计系统以允许加密的迁移?

如何设计系统以允许加密的迁移?
EN

Stack Overflow用户
提问于 2012-01-01 17:37:05
回答 4查看 630关注 0票数 4

我想设置一个系统,允许我将加密密码(散列密码)从一个系统迁移到另一个系统。我该怎么做呢?

再过2个月,我发现了一种比现在好10倍的加密方法,并且当前的散列函数毫无疑问是完全易受攻击的。如何将用户密码从一种哈希类型迁移到另一种哈希类型(更好的哈希)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-01 17:53:10

您可以使用以下技术从一种方法慢慢迁移到另一种方法。我不能保证它的质量,所以请持保留态度(不是双关语)。

例如,考虑以下存储用户的表:

代码语言:javascript
运行
复制
id    name    password    salt    hashmethod
--------------------------------------------
1     alice   ABC52...    ABD...  md5
2     bob     28DHF...    Z+d...  sha1
...

假设您过时的散列方法是md5,并且您希望用更安全的sha1替换它,您可以这样做:

  • 用户登录时,您使用新方法(sha1)和salt对其密码进行哈希处理。
    • a)如果找到匹配项(对应的用户名和密码以及方法sha1),则登录该用户。
    • b)如果未找到匹配项:
      • 1)使用旧方法(md5)和salt进行散列。
        • a)如果找到匹配项(对应的用户名和密码以及方法md5),则使用新方法(sha1)和salt对密码进行散列处理,并相应地更新数据库。用户已登录。如果未找到匹配项,则凭据无效,并且用户不是logged.

用户。

  • b)如果未找到匹配项,则凭据无效,并且用户不是登录用户

此迁移可能需要很长时间,因此为了加快迁移速度,您应该向用户发送电子邮件,要求他们登录或更改密码。

希望能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2012-01-01 17:39:28

一般来说,你不能。你不能从散列中恢复密码;这就是散列的全部要点。如果原来的哈希函数已经损坏,您可以恢复密码,那么您也可以这样做,然后用新函数对它们进行哈希运算。

票数 1
EN

Stack Overflow用户

发布于 2012-01-01 17:48:58

通常,执行此操作的方法如下所示:

1)生成公钥/私钥对,通常使用RSA。

2)确保私钥的安全。你永远不会,永远不会把它存储在网上。(您可能希望将其一分为二,并将其信任给不同的人。您可能想要使用安全的秘密共享。您可能希望将其保护在令牌中。)

3)每当您存储密码时,您还会存储一份使用您生成的公钥加密的副本。

4)如果将来需要恢复明文密码,您可以恢复私钥并解密存储的密码副本。

请注意,这是您如何执行此操作的技术描述。你怎么做是安全的是复杂的,取决于你的实际情况。例如,您必须考虑攻击者将您的公钥替换为自己的公钥的威胁模型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8692561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档