如何在 PHP 中使用 mhash_keygen_s2k() 函数

PHP 有一个内置的 mhash_keygen_s2k() 函数,用于在用户提供的密码的帮助下根据给定的散列创建密钥。

它是 OpenPGP 文档 (RFC 2440) 中指出的加盐 S2K 算法。
它对于计算校验和、消息摘要等特别方便。

请注意,为了检查密钥,还应该知道盐。

mhash_keygen_s2k() 函数的语法如下所示:

string mhash_keygen_s2k(int $hash, string $password, string $salt, int $bytes)

从语法上可以看出这个函数接受四个参数。
这些参数的说明如下:

  • $Hash:保留哈希 ID。换句话说,它持有 mhash_name 常量之一。
  • $Password:保存用户的密码。
  • $Salt:它是一种随机数据,用作单向函数的添加输入,用于散列密码、数据或者密码短语。它的长度是固定的(8 个字节)。
  • $Bytes: T它通过密钥的长度来定义密钥,以字节为单位。

定义了函数的参数之后,我们来看看它可以返回什么值。
成功时,它将以字符串形式返回创建的密钥,否则返回 FALSE。

为了更好的理解,让我们举例说明:

<?php
$inputString = "p4ssw0rd";
$salt        = "abcjkhg111a";
$bytes = "8";
//
//bin2hex 用于将二进制转换为十六进制字符串
print_r(bin2hex(mhash_keygen_s2k(MHASH_MD5, $inputString, $salt, $bytes)));
?>

输出将是:

df9f3fb1cbc33ada
日期:2020-06-02 22:15:55 来源:oir作者:oir