【发布时间】:2010-12-15 01:04:24
【问题描述】:
由于大小限制,似乎 PHP 的 openssl_sign 和 openssl_verify 函数在签名前对数据进行哈希处理,所以我尝试在命令行上模拟它。
通过 openssl 签名:
echo "foo" | openssl dgst -sha1 -binary | openssl rsautl -inkey priv.pem -sign > sig.bin
然后通过 PHP 验证
$key = openssl_pkey_get_public('pub.pem');
$ver = openssl_verify( "foo\n", file_get_contents('sig.bin'), $key, OPENSSL_ALGO_SHA1 );
// $ver always 0
我尝试了多种组合,二进制和十六进制形式的哈希,带有和不带有尾随换行符,甚至在传递到 php 函数之前进行哈希
【问题讨论】:
标签: php cryptography openssl