我一直被告知在给密码加盐时应该使用openssl_random_pseudo_bytes。但我真正想知道的是,是什么让它在密码学上是安全的。rand之间的内部区别是什么?,mt_rand和openssl_random_pseudo_bytes?提前致谢。 最佳答案 区别简而言之:rand使用libc随机数生成器(source),它取决于系统并且通常不是加密安全的mt_rand使用已知算法,MersenneTwister,由此得名;这是一种快速算法,可以生成分布良好但不是加密安全的随机数openssl_random_pseudo_by
我正在尝试使用以下函数创建IV:mcrypt_create_iv(32,MCRYPT_DEV_RANDOM)这会导致脚本在超过60秒后超时。(也许更多?)但是当我使用URANDOM时,它几乎可以立即正常工作。根据我的阅读,使用MCRYPT_DEV_RANDOM应该需要大约4秒,但这肯定花费的时间太长了。错误日志中没有任何内容。我在ubuntu12.04服务器上安装了apache2和php5。我在我的centos服务器上运行了完全相同的代码,没有任何问题。 最佳答案 RANDOM和Unblocking-RANDOM(URANDOM)都
据我了解,新PHPpasswordhashingextension最重要的功能之一(或一般的bcrypt)是算法的速度,它大大减慢了暴力攻击方法。但它仍然以一定的速度运行,这对于字典攻击和暴力破解弱密码来说肯定足够了,[据说]短于六个字母数字字符。所以我想知道,它为什么这么慢,尤其是-哪种密码强度被认为可以安全使用。“你能想象的那么强大”不是答案,因为密码强度始终是安全性和可用性之间的权衡——所以,我正在寻找可以被认为是安全的,甚至是面向future的最小强度。请注意,我是一个实践者-因此,基于具体数字的确定答案比冗长而空洞的理论推理和不确定的结论更可取。进一步澄清,假设最坏的情况:用
我需要提高我们网站的安全性,目前正在使用此处的指南:http://crackstation.net/hashing-security.htm,以及此处生成的随secret码:https://defuse.ca/generating-random-passwords.htm.我收集到两者都使用函数mcrypt_create_iv()生成随机字节(或位?),但出于某种原因,我在CentOS6下安装php-mcrypt时遇到错误。幸运的是,第一个链接说openssl_random_pseudo_bytes()是一个CSPRNG(PHP文档和其他来源也支持该声明),并且在当前服务器安装的PHP
我想创建一个函数或类似Cron的东西来执行一个链接(在Laravel中),带有类似密码的东西。我有两个解决方案。但是哪个更好用:选项1(哈希):选项2(加密):此代码已被广泛描述。更好用我的意思是更安全/更安全,或者那种恍惚中的东西。谢谢! 最佳答案 您的第二个选项不是bcrypt。Laravel的Crypt类使用AES加密。如前所述inthedocumentation:LaravelprovidesfacilitiesforstrongAESencryptionviatheMcryptPHPextension.据我所知,您无需能够
我在用password_hash($password,PASSWORD_BCRYPT);加密密码以存储在数据库中。正如我所读,生成的哈希值没有长度限制,但我需要知道最大长度,以便我可以使用它来定义我的数据库中可以适合所有密码哈希值的字段(在最坏的情况下)。如果我将明文密码的长度限制为20个字符,password_hash()结果会是多长时间? 最佳答案 来自password_hashdocumentation:Thefollowingalgorithmsarecurrentlysupported:PASSWORD_DEFAULT-U
将password_hash与以下unicode字符一起使用是否安全,或者存在不兼容问题? 最佳答案 正如Mark评论的那样,哈希算法本身对字节起作用,因此它们是unicode安全的。唯一的问题可能是PHP对unicode字符串的处理,即密码散列函数binary-safe?让我们测试一下并找出答案:结果:Pass:100Fail:0你的问题的答案是是的,它是安全的。 关于php-将password_hash与unicode字符一起使用是否安全?,我们在StackOverflow上找到一个
PHP5.5中新的password_hashAPI非常好,我想开始在任何地方使用它。给定一个包含旧数据库的旧项目,其中密码存储在md5哈希中,将旧用户密码迁移到新的、更安全的API的最佳方法是什么?除了简单地提示用户在下次登录时重设密码(这对用户来说是不切实际且烦人的)之外,我还考虑过使用当前md5哈希作为我所有现有用户的password_hash()输入的可能性。为了验证这些用户的密码(在登录期间),我会将他们的输入转换为md5散列,然后将其用于password_verify()。新用户可以省去这个额外的步骤。这样做值得吗?有没有更好的透明迁移方法,用户不会因为密码重置而烦恼,但我可
所以,我正在为我的网站切换到laravel。我的旧网站目前拥有大约500名用户。每个用户都有一个md5散列附加到他们身上,作为密码(duh^^)。当我切换到laravel时,我希望使用Auth::attempt不幸的是,它使用自己的方法来散列密码字符串。我不希望我所有的用户更改他们的密码,因为我正在切换到laravel,是否可以让Auth类改为使用md5,这样我的用户就不必切换密码?:)如果是,有人可以告诉我怎么做吗? 最佳答案 MD5已经过时了。我建议你不要试图保留它。相反,当用户首次登录并且Auth::attempt失败时,您应
这个问题在这里已经有了答案:Calltoundefinedfunctionpassword_hash()inPHP5.4(1个回答)关闭8年前。我使用安装了php5.5的XAMPP开发我的网站。我刚刚意识到我的主机只有php5.4(还不能更新到5.5)。我的问题是我无法使用新的php5.5password_hash()功能。是否有用于php5.4的盐散列的等效方法?有没有办法让这个等效代码(下面)在php5.4中工作?$options=['salt'=>uniqid(mt_rand(),true),'cost'=>12];$hash=password_hash($mypassword,