【发布时间】:2016-07-18 05:04:21
【问题描述】:
我正在尝试使用 openssl_private_encrypt 加密一些文本,但函数返回 FALSE 并且不加密任何内容。
我做了两个版本的代码
//$privateKey = file_get_contents(__DIR__.'/key_dev_exe_1k.pem');
$privateKey = openssl_pkey_get_private(__DIR__.'/key_dev_exe_1k.pem');
var_dump(openssl_private_encrypt($referrer_string, $crypted, $privateKey));
var_dump(array($referrer_string, $crypted, $privateKey)); exit();
和
$privateKey = file_get_contents(__DIR__.'/key_dev_exe_1k.pem');
//$privateKey = openssl_pkey_get_private(__DIR__.'/key_dev_exe_1k.pem');
var_dump(openssl_private_encrypt($referrer_string, $crypted, $privateKey));
var_dump(array($referrer_string, $crypted, $privateKey)); exit();
第一个输出包含警告。
警告:openssl_private_encrypt():密钥参数不是有效的私有 键
第二个输出没有任何警告,但显示加密函数返回 FALSE。
bool(false) //encryption function return value
array(3) {
[0]=>
string(218) "..." // here plain text WITH(!) spaces.
[1]=>
string(0) "" // $decrypt value
[2]=>
string(887) "-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCxP65lb3J9rOYLnXEwQHVkave/4t1D+7IfTgh/2L5TJeQC3mi2
[...]
iWegTa/JaMHANXGMAEA8pXIW0P8nPMV587nEqoN44g==
-----END RSA PRIVATE KEY-----
"
}
key_dev_exe_1k.pem 位于同一目录中。
【问题讨论】:
-
OpenSSL 通常不返回 TRUE/FALSE。它通常返回 1 或 0 或其他值。有时0是好的,1是坏的;其他时候1是好的,0是坏的。对于 OpenSSL 的
private_encrypt,它返回签名的大小。出错时,private_encrypt函数返回 -1。
标签: php encryption openssl private-key