2014-04-07 99 views
-1

我想听听如果这是足够安全的密码存储在MySQL数据库。sha512安全的密码

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

这是安全吗?如果不是我怎么能做到更安全?

+0

u使用PHP的版本?如果> = 5.5,你可以使用'password_hash'函数 – slier

+0

更好地使用Salt。 – Sablefoste

+2

使用[bcrypt](http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php) – kojiro

回答

0

基本的直线散列多年来一直没有被认为是安全的。多年来已经彻底破碎了md5。在6-8年前,盐腌被认为是最佳实践,但现在它们不再被认为是安全的。

请使用下列方法之一,以你的密码安全加密:

  • bcrypt(谷歌联系,因为PHP本身的方法是很新的和执行,这将取决于你的PHP版本而异) - 这将目前被认为是行业标准的最佳实践
  • pbkdf2(谷歌链接,基于与上述相同的原因) - 这是一个稍微不同于bcrypt的策略,通常被认为较弱但可以调节,并且可能更容易实现,应该是考虑最低
  • scrypt(我没有看过这个特定的模块,但它是谷歌的最高结果) - scrypt具有某些特性,应该比bcrypt更安全,但它缺少一个关键的元素 - bcrypt具有悠久的历史 - 尝试并没有打破它。

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