我想知道有没有人能给我一些建议?我想知道使用Codeigniter加密密码的以下代码有多安全/不安全或垃圾?
$safe_password = sha1($password, $config['encryption_key'])如果不安全,人们能给我一些使用Codeigniter使其更安全的提示吗?
非常感谢:)
发布于 2013-02-05 01:25:11
众所周知,sha1很容易受到碰撞攻击,请尝试使用bcrypt,因为它是最好的之一。如果bcrypt对您不起作用,请使用sha512并添加盐。
bcrypt看起来很难使用,但是这里有一篇关于为什么你应该使用它的文章:http://phpmaster.com/why-you-should-use-bcrypt-to-hash-stored-passwords/
sha1不安全的原因是因为碰撞攻击,这里是暴露sha1的安全风险的论文之一:http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html
如果你想使用sha512,你需要做的就是:
hash('sha512', $password.$salt);并确保您始终使用盐,否则某人可以使用彩虹表(数据库)来查看您的散列是否与数据库中的公共密码匹配。
发布于 2013-02-05 01:25:40
更好的解决方案是使用bcrypt,看看这个tutorial。
下面是一个可以与Codeigniter https://github.com/waldirbertazzijr/codeigniter-bcrypt一起使用的小型库
另一个相关的question。
发布于 2013-02-05 01:26:00
哈希算法,如sha1和md5,不适合密码存储。它们被设计成非常高效的。这意味着暴力强制是非常快的。即使黑客获得了你的哈希密码的副本,暴力破解它也是相当快的。如果你使用盐,它会降低彩虹桌的效率,但对暴力没有任何帮助。使用较慢的算法会使暴力无效。例如,bcrypt算法可以根据您的需要设置为尽可能慢,并且它在内部使用盐来防止彩虹表。如果我是你,我会采用这样的方法或类似的方法。
https://stackoverflow.com/questions/14691914
复制相似问题