PBKDF2在JavaScript中实现时迭代次数太少导致警告怎么办?
在用Web Crypto API实现密码加盐时,我按照教程设置了PBKDF2的迭代次数为1000次,但Chrome控制台报了安全警告,说迭代次数过低。尝试改成10000次后,生成密钥的延迟明显变长,用户点击登录时页面卡顿了0.5秒。该怎么平衡安全性和性能呢?
我当前的代码是这样的:await crypto.subtle.importKey('raw', password, {name: 'PBKDF2'}, false, ['deriveBits']); 然后调用deriveBits时传入salt和迭代次数。但文档里说推荐至少100000次迭代…
有没有什么优化方法?或者有没有标准的迭代次数参考值?如果改成10万次会不会导致移动端卡得更严重?
如果觉得麻烦,也可以用现成的库比如
pbkdf2,它内部已经优化了Worker支持,直接调用就行。不过记住,别为了性能牺牲安全性,用户密码这东西出事就是大事。