gpt4 book ai didi

PHP - MD5、SHA、散列安全

转载 作者:可可西里 更新时间:2023-11-01 13:14:55 25 4
gpt4 key购买 nike

我是一个用 PHP 构建的新网站的开发人员,我想知道什么是最好的用于散列的东西。我查看了 md5 和 sha1,但还有什么更安全的吗?
很抱歉,如果这是一个笨拙的问题,但我是 PHP 安全的新手,我正在努力让我的网站尽可能安全。还有什么是盐?
谢谢,
瓦西姆

最佳答案

首先,md5 和 sha1 已被证明可以抵抗碰撞攻击并且可以是彩虹很容易列出(当他们看到你的哈希值在他们的常用密码数据库中是否相同时)。
目前有两种足够安全的密码可供您使用。
第一个是 sha512。 sha512 是 SHA2 的子版本。 SHA2 尚未被证明是vunrable 碰撞攻击和 sha512 将生成一个 512 位散列。这是一个例子如何使用 sha512:

<?php
hash('sha512',$password);

另一个选项称为 bcrypt。 bcrypt 以其安全哈希而闻名。它的可能是目前最安全的,也是最可定制的。
在你想开始使用 bcrypt 之前,你需要检查你的服务器是否启用了它,输入这段代码:

<?php
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
echo "CRYPT_BLOWFISH is enabled!";
}else {
echo "CRYPT_BLOWFISH is not available";
}

如果它返回它已启用,那么下一步很简单,您需要做的就是加密一个密码是(注意更多的可定制性,你需要看到这个 How do you use bcrypt for hashing passwords in PHP? ):

crypt($password, $salt);

现在回答你的第二个问题。盐通常是您在末尾添加的随机字符串 当你散列它们时,你所有的密码。使用盐意味着如果有人获取您的数据库他们无法检查普通密码的哈希值。使用彩虹表调用检查数据库。散列时你应该总是使用盐!!

以下是我对 SHA1 和 MD5 碰撞攻击漏洞的证明:
http://www.schneier.com/blog/archives/2012/10/when_will_we_se.html , http://eprint.iacr.org/2010/413.pdf , http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf , http://conf.isi.qut.edu.au/auscert/proceedings/2006/gauravaram06collision.pdfUnderstanding sha-1 collision weakness

关于PHP - MD5、SHA、散列安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14752416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com