我是一个用PHP构建的新网站的开发人员,我想知道什么是最好的用于散列的东西。我查看了md5和sha1,但还有什么更安全的吗?很抱歉,如果这是一个笨拙的问题,但我是PHP安全的新手,我正在努力让我的网站尽可能安全。还有什么是盐?谢谢,瓦西姆 最佳答案 首先,md5和sha1已被证明可以抵抗碰撞攻击并且可以是彩虹很容易列出(当他们看到你的哈希值在他们的常用密码数据库中是否相同时)。目前有两种足够安全的密码可供您使用。第一个是sha512。sha512是SHA2的子版本。SHA2尚未被证明是vunrable碰撞攻击和sha512将生成一个
关于如何安全地存储密码,我阅读了很多相互矛盾的建议。我所知道的就是不要使用MD5!我看到人们提倡使用PHP的bcrypt函数,这似乎会占用服务器的处理器。我见过盐的提倡者和不使用盐的提倡者。这一切都还不清楚。关于如何安全地存储密码,是否有真实可靠的建议?编辑:经过大量研究,我从;login:找到了一篇文章,该文章相当深入地讨论了该主题:http://www.usenix.org/publications/login/2004-06/pdfs/alexander.pdf 最佳答案 好吧,这有几个部分。首先,您需要设法让获取您的数据库和
我想制作一个脚本,将大约100个用户插入Drupal6数据库——他们的用户名、邮件和密码哈希值。在阅读了Drupal6使用的PHP类之后,我不确定我是否可以实现它。我的方法是向每个用户发送一封邮件,例如“你好,x!你的新密码是y”,然后将哈希后的“y”插入Drupal的用户表。我知道Drupal会返回一个md5。但它不仅仅是md5的原始密码,而是一个非常困惑的密码(使用盐和其他方法)。我调查了PortablePHPpasswordhashingframeworkDrupal正在使用,但我不认为它只适用于复制+粘贴方法。所以,我的问题是:我可以创建一个PHP函数来返回有效的Drupal6
我正在尝试实现“记住我”功能,遵循此处提供的指南:Thedefinitiveguidetoform-basedwebsiteauthentication,这里:http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/“cookietoken”似乎在存储在数据库中时应该经过哈希处理(如果攻击者可以访问数据库,未哈希的token看起来像普通的登录名/密码,允许登录网站)。在寻找一个好的哈希算法时,我发现了使用bcrypt的推荐技术:https://stackoverflow.com/a/63
我在database中存储了一个密码,在add操作中使用DefaultPasswordHasher进行了哈希处理。我有另一个更改登录用户密码的操作,在这个表单上我有一个名为current_password的字段,我需要将它与database中的当前密码值进行比较.问题是DefaultPasswordHasher每次我对表单值进行哈希处理时都会生成不同的哈希值,因此它永远不会与数据库中的哈希值匹配。遵循“current_password”字段的验证码:->add('current_password','custom',['rule'=>function($value,$context){
我有一个很大的哈希表(带有字符串索引的数组),正在寻找一个快速从中选取第一个(理想情况下也是第N个)元素的函数。array_shift()和reset()对我的需求来说太慢了。更新:我也不是在寻找基于引用的解决方案,该函数应该接受get_first(some_func_returning_array())中的表达式ANSWERarray_slice方法(荣誉Gumbo)似乎是赢家。完整的基准测试代码functionbigary($n){$a=array();$s=range('A','Z');do{shuffle($s);$a[substr(implode('',$s),rand(10
我正在用C#开发一个客户端应用程序,它将与服务器(php页面)通信以获取凭据和一些关键服务。我想知道在客户端的机器上存储经过哈希处理的密码是否危险?我所说的“良好散列”是指使用众所周知的安全散列函数的随机种子。出于本次讨论的目的,假设源代码是免费提供的(因为所有二进制文件都可以进行逆向工程)。我的想法是,我会将用户名和散列密码存储在用户的计算机上,并且此用户名和散列将通过未加密的http连接以纯文本形式发送到服务器以进行验证。这当然不会阻止黑客在不知道源密码(通过一些代码调整)的情况下使用其他人的用户名和密码哈希作为自己的哈希值。恶意个人是否能够使用散列密码和用于生成散列的代码做任
有没有办法获取从1到40000的任何数字并生成一个8字符的散列?我正在考虑使用base_convert但无法想出一种方法来强制它成为8个字符的散列。如有任何帮助,我们将不胜感激! 最佳答案 为什么不直接运行md5并获取前8个字符?因为您需要一个散列,所以是否丢弃部分并不重要,重要的是相同的输入会产生相同的散列。$hash=substr(md5($num),0,8); 关于PHP-从整数生成一个8字符的散列,我们在StackOverflow上找到一个类似的问题:
我应该使用if(strcmp(md5($string),$hash)==0)还是if(md5($string)==$hash) 最佳答案 在直接比较哈希以进行身份验证等事情时,您应该非常小心,因为您可能会为定时攻击打开一个窗口。虽然这听起来很违反直觉,但您应该对字符串进行全面比较,避免任何优化(即如果字符不同则提前退出)。以下是有关该问题的一些链接:https://wiki.php.net/rfc/timing_attackhttp://codahale.com/a-lesson-in-timing-attacks/http:/
我们想在Java应用程序中进行一些处理,将结果存储在我们的内存缓存服务器池中,然后使用PHP中的内存缓存读回。这很容易尝试,但我想问问是否有其他人这样做过。只要Java和PHP客户端都连接到同一个内存缓存服务器池,两个客户端是否会散列到同一个服务器位置,从而使从PHP检索成为可能? 最佳答案 没有。并非所有客户端都以相同的方式散列。作为证据,您会看到一些客户端提供“一致性哈希”,而其他客户端则不提供。简而言之,memcached客户端可以使用他们喜欢的任何散列算法。没有官方标准。PHP客户端支持avarietyofhashingal