【发布时间】:2018-10-29 03:45:48
【问题描述】:
我正在尝试使用 openssl_sign 对文件进行签名。
我的代码:
$pkeyid = openssl_get_privatekey($priv_key);
// compute signature
openssl_sign($data, $signature, $pkeyid, OPENSSL_ALGO_SHA1);
Echo $signature;
// free the key from memory
openssl_free_key($pkeyid);
问题在于它输出的是奇怪的字符而不是 sha1 哈希。我究竟做错了什么? (我的 PHP 文件是 UTF8 编码的)
输出:
šòеcÔÝ”KÿLÍvÎ*q‡m—Xz¬ëNðñÆÒÐLÉ6вcTO¯à„ØæØSª?tšü T/ß‹‡,¤Sý³f¥Jª¥§š¯ŠqL¾ð›‹å-éuÇ–Öºþ¦ùn}"Ë?=~JTÃj)ŒÉ~^׆±ÍçÏZ5]þNÉÌOhÔMllCJY`k—W²IHrätv¨ôñ IµBÛÕBô€ŸIwèFd8 êÿ2äåçAØèÙtªˆÈÚ‡¹œ£šO.èiÿonE[ÑœZºZ @TpÉO•Ý~~ëq
期待类似的东西:
Ol2rr4oaPHxfQL4ER8Ck15OEr8D8Cn9iGcsjZ8ves2IG7WOFFm0WUyQDAN30trNvO7vRQF25Uosw/Aflx3bRB1ezQNSn6mPvTzU6CPuSC+BBddytOyRvoLPhJ4F910yE8mrKeIuz21un8Dobm3PnZiQr
PS:$data 包含我要签名的文本。私钥已正确加载,我手动将其放入我的文件中。 (它是pem格式的)
【问题讨论】:
-
好吧,看来输出是二进制格式。我使用了 base64_encode,现在它输出了一些更合乎逻辑的东西。仍在运行一些测试。奇怪的是,它没有任何地方说...
-
经过几次尝试后,我认为这不是 sha1 哈希。我仍然无法让它工作......有什么想法吗?