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

Chu*_*ang 4 migration encryption passwords hash saltedhash

我想建立一个允许将加密密码(哈希密码)从一个系统迁移到另一个系统的系统.我该怎么办?

说2个月后,我发现加密速度提高了10倍,目前的哈希函数已经被证明毫无疑问,完全是脆弱的.我将如何将用户密码从一种类型的哈希迁移到另一种哈希(更好的一种).

use*_*016 5

您可以使用以下技术从方法缓慢迁移到另一个方法.我不能保证它的质量,所以请带上一粒盐(双关语).

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

id    name    password    salt    hashmethod
--------------------------------------------
1     alice   ABC52...    ABD...  md5
2     bob     28DHF...    Z+d...  sha1
...
Run Code Online (Sandbox Code Playgroud)

假设您过时的哈希方法是md5,并且您希望将其替换为更安全的sha1,这就是您所做的:

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

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

希望能帮助到你.