Thursday, 15 August 2013

encryption - PHP openssl encrypt decrypt errors? Not valid public/private keys? -



encryption - PHP openssl encrypt decrypt errors? Not valid public/private keys? -

i have test code in php:

function genpgp() { // create keypair $res=openssl_pkey_new(); // private key openssl_pkey_export($res, $prk, bin2hex(mcrypt_create_iv(100, mcrypt_dev_urandom))); // public key $puk = openssl_pkey_get_public($prk); homecoming array($prk,$puk); } function prkeydecrypt($data,$key){ if (openssl_private_decrypt($data, $r, $key)) { homecoming $r; } } $keys = genpgp(); $prk = $keys[0]; $puk = $keys[1]; $data = 'abc123'; openssl_public_encrypt($data,$encrypted,$puk); echo prkeydecrypt($encrypted,$prk);

i'm getting 2 errors, both of them similar, , are:

warning: openssl_public_encrypt(): key parameter not valid public key in test2.php on line 23 warning: openssl_private_decrypt(): key parameter not valid private key in test2.php on line 14

i'm not sure constitutes "valid ... key." there different way i'm supposed getting keys? seems accurate according manual , i've read.

you close. first, don't encrypt private key passphrase. second, public key straight resource. i.e.:

function genpgp0() { // create keypair $res=openssl_pkey_new(); // private key openssl_pkey_export($res, $prk); // public key $puk = openssl_pkey_get_details($res)["key"]; homecoming array($prk,$puk); }

if want utilize passphrase (you going store private key), can utilize like:

function genpgp() { // create keypair $res=openssl_pkey_new(); // private key $pass = bin2hex(mcrypt_create_iv(100, mcrypt_dev_urandom)); openssl_pkey_export($res, $prk_encrypted, $pass); $prk = openssl_pkey_get_private($prk_encrypted, $pass); // public key $puk = openssl_pkey_get_details($res)["key"]; homecoming array($prk,$puk); }

php encryption openssl

No comments:

Post a Comment