2015-04-10 1 views
3
<?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/>"; 
?> 

ЖУРНАЛОВНевозможно расшифровать данные - openssl_private_decrypt(): ключевой параметр не является допустимым закрытым ключом

Private Key = ----- НАЧАТЬ зашифрованный Частный КЛЮЧ ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIr2acPfh8YYQCAggA MBQGCCqGSIb3DQMHBAiCvohdiWAZ4QSCBMjKJUXF5ShKfW3TazpKYTxEV8JmGYLf AJWXzxdi0GrDuddz4aW1FeGwvUm2t/41CTxFsWtgoQJrzCgAQETn54majdrDeF4u zCmvFMKSoVP4xsZKke15e1K1LPmFNNuKKyCqMwL + tpQJ7zquvDTKHapUnNzfNXpZ D2K1r2qZWeDN1d 36DA9wkN5GbpZYAjuHqHUNzorhxIbHGp2WOg8YKdemoTuKIqYC DUKncWtxRUOx6IIZuey + uTBzH7Bn9K9a71QTjUdeWgQZFzy9yVpetB + XrJA92IWt vMeKXCXNhOgkOvkUPNXSuMOVrECNcbKDAKxmK3EQWqb + 8zlYFqjmaL/sCep8ihio 1ZWpRaOd5HxnG5rpmz/BYzcF354mM8B4wAIk7MmFq/pHSKLjpr + 2Ef1BpMmXfRpG Pj1jYDClSIQF6ovKOqhevFwfYrtl2jEOISyAggm/sbD750VBkwhbVAyQcarckAiI GlNcQPOC + JYZOV7o/9o + Tg24zwtAQ8y3hNvYyHjqYI5naVS9yuXEqB6zYoGivs/к bIblqTFebLEFtihjsa9wpXkyNzKD2NvdSa2oNC7IkCNi8TRNjy7MLylSmCIdhWAV YgL1hxShMgbnfiGjFQyYnKzZto9RqRlQBIoBOCfwP1EFnZjCJm02CCeGR + GHKXf7 rJ0n6lIUEvVnENirAPtOuiE2ccbzmyjWQ9f2vwBSUea5nPTMG4uTVHrQjrgNYIyU + vLV6tL + MDKF4JGQGgzBUeqTMobmrOK + V20QIasYaAWHJrL8itBwZ ++ C8lo7kySa SImMXakI4rjgEmj + HmUJygT1EZWz5yQqOiwAYLhQZg + m6 + 32Pvt6mIrAXbznrdHPJxHb/9HV88mQdRKPBTkSTl71Ics + 3oybYPbhSQByXOdtsw6VLYNo4ikgj3tXCz01 DwVQqeQ5tLD4LY8/QaAHkOUq9K24yfkcN + aQh7cvR/HX53Ls6LsdUwkwSOWVj2na Wl4xn + j3ZaPhpgdzcMgknU7BAI2kZP83MxyKnNcnneyX4hTaM5PRZJXKd + onvhff nQ3zHDSYmRDKmTXBjCob3Vjg91LcMjg9dEH7aIFWit5dHK4ll/v1IiOFx8d4d/мВ Oll0c0ujJuPjtyqesM2Bz3Ah5YkIT2Z7kxvRy7rTyytQG7hLNENAki9wW79fcEo7 пер/OvEpjdWZngkL/UrMOX8DBrs0PLEH9jyDoCQx/LSqxMAXOwVXILfsfsUFu0M0o 21YbeC33jOlocJ4Q6pwfRVz8lCQOuIVs1jEpvSmvHgvmHmXUI4Y6nZD4Roi0jIjS VvI73eULzc3j0jIptWxzrHWM6iHx1zRxkLMJSZOx0A27ngtSo7g6 + aJnMO5FDfdR 90vnr + bX4ki + X/N4wVF7eppyapLe/tQ54vAxsyIBrCXPjwBMehiFjOMhzSLW7xQj Qg2KcilfW6oKFzDQQ5nKPEXvQYMhQ1MeWKyNv6BMoc4EEpIGhtziUXWhgT4sN1ES 5sxVcGVoI e1viO/kk3Zq55hETlZbNWs3V511BcEZCiQNrntnbYv6pwKpoB21ZV2E slVhYcslEGliIQKQsWSl5cfc + pqjLteiPrwk14WKJGXl9zX3YH6H7KKB/7SIRZk7 wq8 = ----- END ENCRYPTED PRIVATE KEY -----

Public Key = ----- НАЧАТЬ PUBLIC KEY ----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAriS8qflAjYSYhH2qgC5T yf98X1qoLMXIW9mMkhV8LcApBKOfNjUMc9xjD3a8CR/LYwa4MYhevoKcVfPG8XoE sDGyHh + Н/vtYP0rORB1T3RULVUzDLjX558e2KqPrSN + гУ + Jl1NB0SO5Of3JA + AKA 0Q3botcjOM3WuFa/з + RzsiCrMMhzOZSTBj + ГТФ/VcDipF5PM7 +/LXR + edjRXccT2 WQjsq0sUrtsmpzBE8Niph361RjfIisxKoksQGs7hC/Iv4yhBzZZIpRaZuvDj4ImP + 4sUQgbdVVCso122kg34UtY5qchuSCcJfsGbD2zMw + 8ZftIsJ7dfX1FxujgggDyn 0wIDAQAB ----- КОНЕЦ ОБЩЕСТВЕННОЕ KEY-- ---

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 = 

ответ

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

+0

Большое вам спасибо за решение. Я понял, что ключ был зашифрован, поэтому он не расшифровывает данные. правильно? – Scorpion

+0

Да, это была проблема. – kba

0

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

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

Смежные вопросы