Невозможно расшифровать данные — openssl_private_decrypt (): параметр ключа не является допустимым закрытым ключом

<?php
ini_set('display_errors', 1);

$config = array(
"config" => "C:\wamp\bin\apache\Apache2.4.4\conf\openssl.cnf",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);

// Create the private and public key
$res = openssl_pkey_new($config);

if ($res === false) die('Failed to generate key pair.'."\n");

if (!openssl_pkey_export($res, $privKey, "phrase", $config)) die('Failed to retrieve private key.'."\n");

// Extract the private key from $res to $privKey
openssl_pkey_export($res, $privKey, "phrase", $config);

echo "<br/>";
echo "Private Key = ".$privKey;
echo "<br/>";

// Extract the public key from $res to $pubKey
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];

echo "<br/>";
echo "Public Key = ".$pubKey;
echo "<br/>";

$data = 'plaintext data goes here';

// Encrypt the data to $encrypted using the public key
openssl_public_encrypt($data, $encrypted, $pubKey);
echo "<br/>";
echo "Encrypted Data = ".$encrypted;
echo "<br/>";

// Decrypt the data using the private key and store the results in $decrypted
openssl_private_decrypt($encrypted, $decrypted, $privKey);

echo "<br/>";
echo "Decrypted Data = ".$decrypted;
echo "<br/>";
?>

ЖУРНАЛОВ

Закрытый ключ = —— НАЧАТЬ ЗАПИСАННЫЙ ЧАСТНЫЙ КЛЮЧ ——
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIr2acPfh8YYQCAggA
MBQGCCqGSIb3DQMHBAiCvohdiWAZ4QSCBMjKJUXF5ShKfW3TazpKYTxEV8JmGYLf
AJWXzxdi0GrDuddz4aW1FeGwvUm2t / 41CTxFsWtgoQJrzCgAQETn54majdrDeF4u
zCmvFMKSoVP4xsZKke15e1K1LPmFNNuKKyCqMwL + tpQJ7zquvDTKHapUnNzfNXpZ
D2K1r2qZWeDN1d36DA9wkN5GbpZYAjuHqHUNzorhxIbHGp2WOg8YKdemoTuKIqYC
DUKncWtxRUOx6IIZuey + uTBzH7Bn9K9a71QTjUdeWgQZFzy9yVpetB + XrJA92IWt
vMeKXCXNhOgkOvkUPNXSuMOVrECNcbKDAKxmK3EQWqb + 8zlYFqjmaL / sCep8ihio
1ZWpRaOd5HxnG5rpmz / BYzcF354mM8B4wAIk7MmFq / pHSKLjpr + 2Ef1BpMmXfRpG
Pj1jYDClSIQF6ovKOqhevFwfYrtl2jEOISyAggm / sbD750VBkwhbVAyQcarckAiI
GlNcQPOC + JYZOV7o / 9o + Tg24zwtAQ8y3hNvYyHjqYI5naVS9yuXEqB6zYoGivs / к
bIblqTFebLEFtihjsa9wpXkyNzKD2NvdSa2oNC7IkCNi8TRNjy7MLylSmCIdhWAV
YgL1hxShMgbnfiGjFQyYnKzZto9RqRlQBIoBOCfwP1EFnZjCJm02CCeGR + GHKXf7
rJ0n6lIUEvVnENirAPtOuiE2ccbzmyjWQ9f2vwBSUea5nPTMG4uTVHrQjrgNYIyU
+1
JxHb / 9HV88mQdRKPBTkSTl71Ics + 3oybYPbhSQByXOdtsw6VLYNo4ikgj3tXCz01
DwVQqeQ5tLD4LY8 / QaAHkOUq9K24yfkcN + aQh7cvR / HX53Ls6LsdUwkwSOWVj2na
Wl4xn + j3ZaPhpgdzcMgknU7BAI2kZP83MxyKnNcnneyX4hTaM5PRZJXKd + onvhff
nQ3zHDSYmRDKmTXBjCob3Vjg91LcMjg9dEH7aIFWit5dHK4ll / v1IiOFx8d4d / мВ
Oll0c0ujJuPjtyqesM2Bz3Ah5YkIT2Z7kxvRy7rTyytQG7hLNENAki9wW79fcEo7
лн / OvEpjdWZngkL / UrMOX8DBrs0PLEH9jyDoCQx / LSqxMAXOwVXILfsfsUFu0M0o
21YbeC33jOlocJ4Q6pwfRVz8lCQOuIVs1jEpvSmvHgvmHmXUI4Y6nZD4Roi0jIjS
VvI73eULzc3j0jIptWxzrHWM6iHx1zRxkLMJSZOx0A27ngtSo7g6 + aJnMO5FDfdR
90vnr + bX4ki + X / N4wVF7eppyapLe / tQ54vAxsyIBrCXPjwBMehiFjOMhzSLW7xQj
Qg2KcilfW6oKFzDQQ5nKPEXvQYMhQ1MeWKyNv6BMoc4EEpIGhtziUXWhgT4sN1ES
5sxVcGVoIe1viO / kk3Zq55hETlZbNWs3V511BcEZCiQNrntnbYv6pwKpoB21ZV2E
slVhYcslEGliIQKQsWSl5cfc + pqjLteiPrwk14WKJGXl9zX3YH6H7KKB / 7SIRZk7 wq8 =
—— ЗАКРЫТЫЙ ЧАСТНЫЙ КЛЮЧ ——

Открытый ключ = —— НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ ——
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAriS8qflAjYSYhH2qgC5T
yf98X1qoLMXIW9mMkhV8LcApBKOfNjUMc9xjD3a8CR / LYwa4MYhevoKcVfPG8XoE
sDGyHh + Н / vtYP0rORB1T3RULVUzDLjX558e2KqPrSN + гУ + Jl1NB0SO5Of3JA + AKA
0Q3botcjOM3WuFa / з + RzsiCrMMhzOZSTBj + ГТФ / VcDipF5PM7 + / LXR + edjRXccT2
WQjsq0sUrtsmpzBE8Niph361RjfIisxKoksQGs7hC / Iv4yhBzZZIpRaZuvDj4ImP
+ 4sUQgbdVVCso122kg34UtY5qchuSCcJfsGbD2zMw + 8ZftIsJ7dfX1FxujgggDyn 0wIDAQAB —— КОНЕЦ ПУБЛИЧНОГО КЛЮЧА ——

Encrypted Data = Uš6/ùÅËæÝmL4²G¾'gr¨Ñ­Ä‰ï‚zêbÀ)[îR0s‹yÝ`t™õ°Þe­Ïd>×o¯rß9ÌÔÅAü!-†D·¨ÎVZ¼?¶éžäýöaØT~=‚Fan¢ºq{M”ƒ¹Cû5N3¹.Ð(·#*ÏRƹñß÷õƒ_ò9c-Ÿ% ×óè2Ꙃõ“ÂÐgNÈ-ˆd«…ºt§¼Ô}yŠ"7èPš(¶R¤ßJÚ_h¶ðÞK(Cj“7‘Y ÀŠþrôZƒ4)JU•˜„üˆ k0â§Êë^ÚºGÚªúVKø†ë8ÏLÚó  „Ÿ¦¿¤

( ! ) Warning: openssl_private_decrypt(): key parameter is not a valid private key in C:\wamp\www\android\pki_example.php on line 41
Call Stack
#   Time    Memory  Function    Location
1   0.0020  252696  {main}( )   ..\pki_example.php:0
2   0.2043  258032  openssl_private_decrypt ( ) ..\pki_example.php:41

Decrypted Data =

5

Решение

// Decrypt the data using the private key and store the results in $decrypted
openssl_private_decrypt($encrypted, $decrypted, openssl_pkey_get_private($privKey, "phrase"));

echo "<br/>";
echo "Decrypted Data = ".$decrypted;
echo "<br/>";

openssl_private_decrypt Функция может использовать закрытый ключ в формате PEM, но ваш ключ зашифрован, и у этой функции нет аргумента для пароля. Вы должны использовать openssl_pkey_get_private вместо.

6

Другие решения

Не знаю, в чем причина. Я думаю, что кто-то может редактировать это с точной причиной.

Когда я использую закрытый ключ в одной строке, он выдает ошибку, упомянутую в этом вопросе.
Но когда я использую один и тот же закрытый ключ, разделив его на несколько строк (64 символа в строке) оно работает. Таким образом, нет необходимости использовать openssl_pkey_get_private($privKey, "phrase") функция. На самом деле у меня не было парольной фразы для моего закрытого ключа.

0

По вопросам рекламы [email protected]