Openssl_private_encrypt returns FALSE


Openssl_private_encrypt returns FALSE

我试图用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在同一目录中。

这适用于我的

//index.php
$data = "Hello World";
$fp = fopen("keys/doe.key","r");
$priv_key = fread($fp, 8192);
fclose($fp);
openssl_private_encrypt($data, $crypttext, $priv_key);
echo $crypttext;
//doe.key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC6b/s0KbyEUUppH2IF0pr6JHSO815Sjg/HnHiJUIUYqjU35FE1
N1AfvbHzK5tpMu7FfjulJPGwbQo3OQSKN4QEPr6QFrEAQ0XcISrnhXPeGMJUPq/v
4FGi34f480Wr6wsp8gfCY06Z1A1745EWlPAFvtM4ne5psvbf/BvKGa4hywIDAQAB
AoGAEw9XsyGBMFXPMagPsWCyj1giwmqG/hGf81w/xmoA8WCVSD2DP9mDy3rtMlsG
7F5UosQg/OUmAE9ld/fQSwEZ8dhKvGGYlXnRWbEJ4Gjab7LxCrqWsJ2RQyzfe+An
ARz4KV6iP9j/Ot0gLqfVEb+ZiLl17kitNmcN34eRfJ6BW0ECQQDv6OZRx7l6Y/GP
Tw3Bq++wEiYen+Qw3x3Rz3xR78otF/oGA2Au8s1wPAo1OZTDbnix2zvROw6oyDzA
/kSqv2GjAkEAxvD+u7RHJsS+TxYGmB0xTGKg60e1UsHQKs+JVFlZQrcvqYxQC71Q
Huz2fqrlIteVzPtcEc04VfpsAIpVSlRRuQJBALBocyNjVzF12CPmn1jv0rmHPtx5
+dMt3MFwbhvZ1LI/1SsixFEBXKrQmzjz9D2YN8ugR2XcpTTauEG5NkjPnT0CQQCW
w5goo+ywArW+tZB1wtnTa4NMCuHtP5gEeZc3ZybwGmdydDVNUEDhzu7W+6f+iaaq
22rgyseA0PD8T9lnJRNxAkAXr4kEazYVMRHQkqVFNw3I3tUnl9gNel/UH3EPFQjD
YiRgQZ+BowgzAr0NPC2hWgA03LbhQEJVGcF7pGVSt/Gh
-----END RSA PRIVATE KEY-----