【问题标题】:Openssl_private_encrypt returns FALSEOpenssl_private_encrypt 返回 FALSE
【发布时间】: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


【解决方案1】:

这对我有用

//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-----

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2015-08-02
    • 2012-05-17
    • 2013-10-26
    • 2013-01-06
    相关资源
    最近更新 更多