sha512对密码是否安全?

时间:2014-04-07 20:34:56

标签: php passwords sha512

我想知道这是否足够安全,可以将密码存储在mysql数据库中。

<?php
    $password=hash('sha512',$_POST['password']);
    //and then insert it into and mysql database
?>

这样安全吗?如果不是,我怎么能更安全呢?

2 个答案:

答案 0 :(得分:0)

基本的直线哈希多年来一直没有被认为是安全的。多年来md5被彻底打破了。咸味哈希一直被认为是最佳实践,直到6 - 8年前,但现在它们也不再被认为是安全的。

请使用以下方法之一安全地加密密码:

  • bcrypt(谷歌链接,因为原生PHP方法非常新,实现方法因PHP版本而异) - 目前这被视为行业标准最佳实践
  • pbkdf2(谷歌链接,出于与上述相同的原因) - 这与bcrypt略有不同,通常被认为较弱但非常可调,可能更容易实现,应该被视为最低
  • scrypt(我没有看过这个特定的模块,但它是谷歌的最佳结果) - scrypt有某些特性应该比bcrypt更安全,但它缺少了bcrypt的一个关键要素 - 人们尝试并且未能打破它的悠久历史。

所有这些功能的关键在于它们的设计运行缓慢。特别是,传统的哈希算法每秒可以运行数百万或数十亿次,允许攻击者在合理的时间内强行密码,这些功能可以调整为每秒运行10次,或两次,或者一次,甚至需要几秒钟才能完成。您永远不会希望将这些算法设置为以这种方式运行,您可能希望对其进行调整以使其在1/10到3/10秒内完成,这对您的用户来说几乎察觉不到,但仍然会使暴力行为变得不切实际。

答案 1 :(得分:0)

我建议使用河豚 http://www.php.net/manual/en/function.crypt.php 使用自定义生成的盐