PHP';密码功能在内部工作?

PHP';密码功能在内部工作?,php,hash,crypt,Php,Hash,Crypt,如果我在PHP中进行以下调用,它将使用我的密码和salt使用sha512对其进行多次哈希: echo crypt('password', '$6$rounds=1000$salt'); 然而,我想知道这个过程到底是如何运作的。是这样的吗 $hash = hash('sha512', 'password' . 'salt'); for ($i = 1; $i < 1000; $i++) { $hash = hash('sha512', $hash); } echo base64_e

如果我在PHP中进行以下调用,它将使用我的密码和salt使用sha512对其进行多次哈希:

echo crypt('password', '$6$rounds=1000$salt');
然而,我想知道这个过程到底是如何运作的。是这样的吗

$hash = hash('sha512', 'password' . 'salt');
for ($i = 1; $i < 1000; $i++) {
    $hash = hash('sha512', $hash);
}
echo base64_encode($hash);
$hash=hash('sha512','password'.'salt');
对于($i=1;$i<1000;$i++){
$hash=hash('sha512',$hash);
}
echo base64_编码($hash);
或者这是一个非常复杂的过程


我提出这个问题的原因是因为我想要一个易于在其他语言中实现的加密哈希系统。

如果您正在寻找一个强大的密码哈希算法来跨不同语言实现,请使用。有用于Java、C#、JavaScript、PHP、obj-C、Python、Perl等的库


如果这是一个登录表单,一个好主意是使用JavaScript bcrypt库,并将散列传输到服务器。这使得工作系数相当大,而不会使服务器过载或引入DoS漏洞。

如果您正在寻找一种强大的密码哈希算法来跨不同语言实现,请使用。有用于Java、C#、JavaScript、PHP、obj-C、Python、Perl等的库


如果这是一个登录表单,一个好主意是使用JavaScript bcrypt库,并将散列传输到服务器。这使得工作系数相当大,而不会使服务器过载或引入DoS漏洞。

您可以在此处查看实际的crypt()源代码:

也就是说,正如其他人所指出的,如果您正在散列密码,那么您可能应该使用bcrypt。下面是一篇关于密码哈希方法的流行帖子:


您可以在此处查看实际的crypt()源代码:

也就是说,正如其他人所指出的,如果您正在散列密码,那么您可能应该使用bcrypt。下面是一篇关于密码哈希方法的流行帖子:


哦,使用SSL。您几乎可以免费获取证书(现在甚至有免费的CA!),所以没有理由使用明文登录。散列注入。嗯,这不就是为什么要破坏散列的最初用途吗?如果只传递散列而不传递机密?@hakra No,客户端散列将在服务器上再次散列,并使用更高性能的散列(例如SHA512)。这给了您性能上的好处,而无需将哈希设置为密码。哦,使用SSL。您几乎可以免费获取证书(现在甚至有免费的CA!),所以没有理由使用明文登录。散列注入。嗯,这不就是为什么要破坏散列的最初用途吗?如果只传递散列而不传递机密?@hakra No,客户端散列将在服务器上再次散列,并使用更高性能的散列(例如SHA512)。这将为您提供性能优势,而无需将哈希设置为密码。