如何为每个用户制作绝对原创的盐? 在PHP中使用time()
函数更好吗?PHP在我们这个时代给密码加盐的最佳方式
回答
在很多情况下,一个简单的uniqid(mt_rand(), true)
会做随机生成一个盐。结合Blowfish应该给你一个相当不错的密码哈希。
替代品是伪随机来源,例如/dev/urandom
或openssl_pseudo_random_bytes()
。还有一些服务可以为您生成随机数据(基于无线电主动降级)。
考虑使用随机盐代替非随机..也许你会发现一些有用的东西这篇文章http://www.gregboggs.com/php-blowfish-random-salted-passwords/
此外,在看看这篇文章http://codahale.com/how-to-safely-store-a-password/
一种方法是产生为每个用户提供独特的盐,并将该盐存储在DB中。
另一个好方法是,生成密码散列的算法必须计算超过秒的盐。更复杂的哈希算法将是 - 更多的问题将面对谁想要破解你的数据库
我不明白你的意思是“必须计算超过秒的盐”。你的意思是执行时间应该超过一秒?请详细说明这一点。 – nullability
@nullability是的,超过一秒执行 – Ribtoks
使用这条线在PHP
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
可以使用microtime()
函数在PHP中生成强盐的人根据微秒生成一个数字,而不是秒,这使得用户几乎不可能与另一个用户产生相同的盐分。您也可以将此号码与用户的ID相乘。
也许md5(uniqid())
已经足够用于你的应用。
编辑:忘记提及uniqid()
功能more_entropy参数。这将较小的相同字符串的机会,即使功能运行在同一个微秒的两倍,所以编辑功能应该是这样的:
$salt = md5(uniqid($user_id, TRUE));
- 1. 盐密码的最佳方式是什么?
- 2. 我们在哪里存储密钥/密码/盐进行加密?
- 3. 加密盐ALGO CryptSharp给人密码不同的加密.....如何得到这个
- 4. PHP盐密码
- 5. 最佳方式加密密码PHP(2017年)
- 6. 密码盐:其他最佳实践
- 7. 当我使用盐渍的CRYPT_MD5加密我的密码时,什么在加密?
- 8. 在PHP中加密变量的最佳方式我不希望人们看到,仍然能够解密它?
- 9. 哪个是隐藏PHP源代码的最佳方式?
- 10. 在给定的日期时间在JavaScript中执行代码的最佳方式
- 11. 最佳的方式在PHP
- 12. 我在php的加密代码错误
- 13. 盐密码Decypt方法
- 14. 什么是最好的方式来记录这个PHP代码?
- 15. 如何使用密码和盐以这种方式进行AES加密,以便在Java中仅使用相同的密码和盐进行解密
- 16. 订购代码的最佳方式
- 17. 代码Top_Hits聚合的最佳方式
- 18. 写这样的重复代码的最佳方式是什么?
- 19. 什么是保持我的PHP文件只有PHP代码的最佳方式?
- 20. 使用magento代码调整我们的自定义图像的最佳方式
- 21. 加密密码的最佳算法
- 22. 在php中使用这个数组循环的最佳方式
- 23. 构建这类代码的最佳方式是什么?
- 24. 什么是避免这种重复代码的最佳方式
- 25. 最佳方式/解密
- 26. 在同一行写这个红宝石代码的最佳方式
- 27. 盐和密码
- 28. 加密在登录时比较哈希和盐渍密码
- 29. 自动从PHP代码中删除评论的最佳方式
- 30. 记录AJAX + PHP代码的最佳方式?
我认为这是openssl_random_pseudo_bytes()from [link](http://php.net/openssl_random_pseudo_bytes) –