【问题标题】:Batch creating seafile users (cloudstorage) with php: Password hash doesn't match使用php批量创建seafile用户(cloudstorage):密码哈希不匹配
【发布时间】:2014-04-29 23:02:49
【问题描述】:

我正在尝试使用 php 创建 seafile 用户。 http://www.seafile.com

已经存在的用户的哈希值如下:

PBKDF2SHA256$10000$9ee87caa42ed5b5fd3f62781d8df82af5e2d9e5e5250d22bf70336cc5e2fb060$478602208097c48b47042e25d026fec1b0363551a4f52aa2e2674f3093010215

所以我假设散列算法是 sha256,使用 10k 轮的 pbkdf2 密钥派生函数。之后的第一部分应该是用 $ 分隔的盐,然后应该是 pwd 哈希。

Seafile 是开源的,所以我试图找到生成此哈希的代码并找到 this one:

有一个名为hash_password_pbkdf2_sha256() 的函数应该可以完成这项工作。

当我尝试使用 php 创建与上述相同的哈希时(密码为“12345678”)

hash_pbkdf2('sha256', '12345678','9ee87caa42ed5b5fd3f62781d8df82af5e2d9e5e5250d22bf70336cc5e2fb060', 10000, 64)

我得到148f4d331b647bafa2b15d145814d56fbe40e13221aff6e53329680b4cadbc84 不等于上面的478602208097c48b47042e25d026fec1b0363551a4f52aa2e2674f3093010215

任何想法如何解决这个问题?

【问题讨论】:

    标签: php hash sha256 password-encryption pbkdf2


    【解决方案1】:

    您指向的文件中的 C 函数 validate_passwd_pbkdf2_sha256 在对密码进行哈希处理之前调用 hex_to_rawdata (salt_str, salt, SHA256_DIGEST_LENGTH)。 PHP 等价物是 hex2bin。

    hash_pbkdf2(
      'sha256',
      '12345678',
      hex2bin('9ee87caa42ed5b5fd3f62781d8df82af5e2d9e5e5250d22bf70336cc5e2fb060'),
      10000,
      64
    );
    

    产生预期的478602208097c48b47042e25d026fec1b0363551a4f52aa2e2674f3093010215

    【讨论】:

      猜你喜欢
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      相关资源
      最近更新 更多