singpolyma / openpgp-php

OpenPGP.php is a pure-PHP implementation of the OpenPGP Message Format (RFC 4880).
http://singpolyma.github.io/openpgp-php/
The Unlicense
179 stars 69 forks source link

Encryption/Decryption issue with pgp keys #89

Closed siva-fstack closed 3 years ago

siva-fstack commented 4 years ago

Hi,

I need help for below code, i am using pgp public/private keys for encryption and decryption after decrypt nothing has returned.

My code:

`$publickey = '-----BEGIN PGP PUBLIC KEY BLOCK----- Version: BCPG v1.64

mQENBF3OXnsDCADInJcfC0JchkD6MsGlPYkywLX4IsKPtcG7YKNR7+55qdV9NDad jDll5FTGKwPbQxzKL5N/Um4T21xwN6quZu9x3a9W8gfiC75IkGpcE90pUEZ0qE9b rGe2ipc80rCWeji0FEjP0CfDTXGZGe4Knh5pAQBvgDdFSaDFd1M3NRp8cpTCUXrv Jt005G4bOUf3ZMAqcoRsGsK1GvjCiSsNdwKrXRg1Yx93kg+vqAdVIiDEjsX5WHVp WR9utrhbNLVm9TfXIXghn2Z+27ftfs7PxBkghLJeg0/ubgxXO05rN8hMjU8yV/wv R5gOUiYiVcm+v5z+qBd77ouZu1gxIEPAqYFFABEBAAG0FnRlc3QuY2xpZW50QG5j cy5jb20uc2eJAS4EEwMCABgFAl3OXnwCGwMECwkIBwYVCAIJCgsCHgEACgkQUjCb yrkqiWK/Ggf7BqmsWBqQ7HmhGtJnC8RVsiCW1gT3x7NfYOH6HYWioAAm35UUsLLz JkfA+SRog/z0ZiYKcWe0uhH9XcRMuJNxeKgUpT5KCqmzLM50GWLuYOqEvfLSXWjF DcWRoAnmBOsv9kG4FMtTyEtZWMgT0GgiDCWX/trgAWCwlQY15QCwkLqQfep4M8OV HY165i0THfhOSTnzVB+E1FydDE5XoT1qFmsBTM739pjWjW4zKNpOgJ8CRKu8voge Dyu0gN3eBilwoZn5ptz5KgfWSEMUXfrsUQpr9QcLmUeP4QovKxjO7hmooGrC7nr6 XPpwutbaJkWmBzRj7IoiuCS0yj5wD8362LkBDQRdzl58AggAs213+w/vTn8LlzJ5 Ngw24OwxlaO9qyb8SFzXNVP6LCx7OeurK5olnWbpz9C4WJwhNG48/f2rdzXx/WBX ycGdlf2lL+QQgQYWifrxd9Y2DllyjtlQ//9+mG2i0t5Tt5kqvmEocJqtEbiHlD+9 hcyPVQOa3jX7+TttozfaeaAFUwBHSf0y6S5yXzN/gbcIGFZArwIn/w0kch7PIANh 7tE0Um7IORwHzikROPLBFcA79iS9BnPI3V/SSxAZiFKaO3sCXm1RPwdWom3ewo9t cjE3JLTt/xa7kSuAjpoP/ypChHauPqUVyiyT8ebu+MsTMY38MujRu1CEoubChaVC KGluvwARAQABiQEfBBgDAgAJBQJdzl58AhsMAAoJEFIwm8q5Koli85sH/A05Hzhl ClCdqIwfPvNWmxA58X5mfqI50ClQUhv5N8hqObHhbE/0mwzbDKTjS8dz+uCzNzsI lzGkL4e/NtljC8gXrUIxGiu0S+2LoAVDhX/R9vY6M46R0oIwwIySSNk62/HrQyil v1jdgOgv03u/EXOhv/zInPaCaw+M9cYfcHWU9IOPEkvEqCXwEOWIvyQGAc/6SuNL B/YUXsbyqFa53v/Js4NIXedDZ3dG2drRYrxKs9x0uMmU19OgAX7yx5vOYWCyGYJs 9UHcpQxi6vhbDB8IczYYwFdZ8dp1xMbbKCgCn4FyujSDdV42S4FieLROzhk+M1ew Jtdi28NJcvRZKko= =OoBA -----END PGP PUBLIC KEY BLOCK-----';

$privatekey = '-----BEGIN PGP PRIVATE KEY BLOCK----- Version: BCPG v1.64

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 V7Am12Lbw0ly9FkqSg== =SHvK -----END PGP PRIVATE KEY BLOCK-----';

$data = new OpenPGP_LiteralDataPacket('This is text.......');
$encrypted = OpenPGP_Crypt_Symmetric::encrypt($publickey, new OpenPGP_Message(array($data)));

var_dump($encrypted);
// Now decrypt it with the private key 
$decryptor = new OpenPGP_Crypt_RSA($privatekey);
$decrypted = $decryptor->decrypt($encrypted);
var_dump($decrypted);`   //<-- it does not return anything, to decrypt tried with same public key also

image

jstanden commented 4 years ago

Check the decryption example at: https://github.com/singpolyma/openpgp-php/blob/master/examples/deASCIIdeCrypt.php#L17

You need to iterate through the private key packets until you find a OpenPGP_SecretKeyPacket. That may be encrypted with a passphrase that you need to decrypt first.

You pass the decrypted OpenPGP_SecretKeyPacket to OpenPGP_Crypt_RSA() rather than the entire private key. Then use that $decryptor to decrypt your message.