seafile pbkdf2哈希php

时间:2017-03-02 13:48:31

标签: php hash pbkdf2

我每次需要在我的seafile服务器上登录时都试图为用户生成一个随机密码。 使用方式: - 带有SHA256的PBKDF2 - 10000次迭代 - 32字节盐

我使用的代码是:

<?php   
  $salt = random_bytes(32);
  $salt = bin2hex($salt);
  $iterations = 10000;
  echo "GENERATED SALT: " . $salt . "<br>" . "<br>";

  $hash =  hash_pbkdf2 ("sha256" , "weirdone" , $salt , $iterations);
  echo "GENERATED HASH: " . $hash . "<br>" . "<br>";

  echo "FINAL RESULT: PBKDF2SHA256$" . $iterations . "$" . $salt . "$" . $hash . "<br>" . "<br>";

?>

问题是,即使使用相同的盐,我也会获得不同的输出 例如:

SALT: 09d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed
PASSWORD: weirdone

  seafile output:
  PBKDF2SHA256$10000$09d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed$45145c60802f1fdce581a550b5e23f8027ba6ff0720c81f2efaa73025bd465ca

  my output:
  PBKDF2SHA256$10000$09d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed$007c599ba2d0076e19589bb90303155efa2df8a2f6b49d845902c075bc5f5492

如果算法,盐,密码和迭代是相同的,为什么它们不匹配?

目标是生成新密码,将其插入数据库并将其提供给用户,以便他可以登录。

由于

1 个答案:

答案 0 :(得分:1)

您传入十六进制编码的$ salt,需要将原始字节$ salt传递给hash_pbkdf2()。