我有一个SSL命令,它使用给定的密钥对字符串进行签名:
openssl dgst -sha256 -hex -sign key.pem data.txt
。我想知道如何将它转换为PHP函数。 PHP中的等价物应该是这样的:
openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256)
。但是,unix命令以十六进制输出签名,而我实际上并没有得到PHP命令输出的内容。
答案 0 :(得分:1)
这将产生与openssl命令相同的十六进制表示:
$signature = "";
$data = file_get_contents("data.txt");
$key = file_get_contents("key.pem");
openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256);
echo bin2hex($signature);
基本上,php版本生成二进制字节,因此在上面的代码中,我只使用bin2hex函数以与openssl命令中相同的格式输出它。