Bru*_*man 15 passwords hash md5 sha
我有一个旧的应用程序,其用户密码存储在数据库中,带有MD5哈希.我想用SHA-2系列中的东西替换它.
我想到了两种可能的方法来实现这一点,但两者看起来都很笨重.
1)添加一个布尔"标志"字段.用户在此之后第一次进行身份验证时,使用SHA密码哈希替换MD5密码哈希,并设置该标志.然后我可以检查标志以查看密码哈希是否已被转换.
2)添加第二个密码字段以存储SHA哈希.用户第一次在此之后进行身份验证,使用SHA散列密码并将其存储在新字段中(可能同时删除其MD5哈希值).然后我可以检查SHA字段是否有值; 这基本上成了我的旗帜.
在任何一种情况下,对于不经常登录的任何用户,MD5身份验证都必须保留一段时间.任何不再活动的用户永远不会切换到SHA.
有一个更好的方法吗?
Jør*_*ode 11
基本上相同,但可能比添加额外字段更优雅:在Django的默认身份验证框架中,密码哈希存储为如下构造的字符串:
hashtype$salt$hash
Run Code Online (Sandbox Code Playgroud)
Hashtype是sha1或md5,salt是用于加密原始密码的随机字符串,最后是哈希本身.示例值:
sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4
Run Code Online (Sandbox Code Playgroud)