为了账号安全,请及时绑定邮箱和手机立即绑定

当加盐算法需要改变,数据库该如何更新?

当加盐算法需要改变,数据库该如何更新?

守着星空守着你 2019-04-14 09:53:04
假设网站上有大量的注册用户,因为某些情况需要改变用户密码的加盐算法,那么数据库里的用户信息该怎么更新?我想到的方法是:新增一个字段,新的加盐算法正式上线后,用户第一次成功登录时就把新的加盐后的值存到新字段,旧的值去掉。但是这样的话:用户每次登录都要判断是否已经更新其密码加盐值,在某种意义上来说会不会是不环保的?几百年不登录一次的用户需要怎么处理?P.S.加盐算法是不是一般都要有长远的考虑,不要经常改变?
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

加盐算法可以很简单的判断
新增一个版本字段,用户登录时,判断版本,如果是老版算法,则使用老版验证,验证成功后再静默地更新到新版算法。如果是新版算法那么就直接用新版算法登录
                            
查看完整回答
反对 回复 2019-04-14
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

php的密碼加密函數的解決方案是把加密方法作爲加密結果的前綴,只要讀取這個前綴即可知道用何種算法。
如以前沒有前綴,那麼找一個不會出現在以前版本結果里的字符串做前綴即可。
至於更新,當然要把密集的運算稀釋掉,比如用用戶登錄做觸發。至於是否登錄成功,這其實意義不大。
好比PHP的寫時複製,按需計算而不是按意義計算。這樣不登錄的用戶也不用考慮了。
另外,持續判斷是何種加密算法並不是冗餘的,它應該算作加密算法的一部分。不停重複運行加密算法算不算冗餘呢?
長遠的考慮不意味着阻止突發事件的處理。比如一向用md5加密,卻突然發現md5爆出重大漏洞(雖然可能性很低),這時候要不要立即更換?
所謂的長遠,不僅要考慮到正常時期,還要考慮到突發事件。
這也是爲什麼你遇到這個問題——一開始就沒設計好,沒做好長遠的考慮。
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 340 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号