RSA decryption doesn't work - php

I trying to encrypt and decrypt a simple string with PHPseclib, but when I try to decrypt it, the result is null or empty. Could any one help me please?
here are my functions
public function myEncrypt($conteudoArquivo, $private_key) {
$rsa = new Crypt_RSA();
$rsa->loadKey($private_key);
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$cipherText = base64_encode($rsa->encrypt($conteudoArquivo));
return $cipherText;
}
public function myDecrypt($cipherText, $public_key) {
$rsa = new Crypt_RSA();
$rsa->loadKey($public_key);
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$plainText = base64_decode($rsa->decrypt($cipherText));
return $plainText;
}
and the keys values are:
$private_key = "-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCRwpD+gV0skm+9SHPWFXAHkWV3r37I3N4fom45Z0imih3fDk9E
Q6PuFb56Vfo8IWiNUoP6Gco/eDHcInzO1SSEn07reh86Aosnnj7m/RMg1N5k7A5C
NH26YlATqgJe4DX8SdS/oKLit7xTo3aR+Wg3kZOQQmE5MyRq6TVDywhNyQIDAQAB
AoGAVFk4mN75sUJogSu9RMURGIAOLM2U293ceIgBqxxW0XEZyiu4uTM/WRaiLJ82
eLeIjkeS8hccj9AZYl9exD5Zq7oGTH8HDQAcmZ6p0h3faI1/sR3gnqEB28GZJyd7
MsFRlRiOEdpJAki33m/6UsJ7hRHC6X/w2K4wofzmmHopOIECQQDCAMW7gc4Gmyb1
scP8OwA75QZWgeLo36d7ynUzjqoN682ckSbIxbT6z4eYhEKE/It0gt07WTNmrL0s
vv4DH15xAkEAwFcTC1/FufpDvxt+EKnANmuH5ekri1zcsY3UMJJnjH9e7szfVTH6
JfhTRRSfi/oOe1aRinfcp/zMJhkf36VA2QJAO8K5JlWJ/Yb1rWGhGaWjINAf7637
E/kxQnTPPZ6Iy9kDcWNVKyub4FblUhoL06Nn4fAd7hZAOzSi4ZHD9XpIQQJAc1MC
QTygcp1jB3A1i0oszLR23FyNVldMoE044BK4cZ5hTm+arRt1MFUPoIj4DNbW3g8O
3uZ1cGf8BA/mc5NDKQJAexm+LcJ3DOTaenQwHw77bfXhbvvCtcvAlYOIawkyDlTx
AkBweqy8BEJbsVRSiBv7k6Hh+T+u1ZWaKDm/ZZCMkA==
-----END RSA PRIVATE KEY----- ";
$public_key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCU+1bLfPmcY7qrF/dTbAtuJlv4R/FVc1WEH9HK
U0jQjX/n/db9vz/x0i3te/bKLNEcwUhBu+PWPnOt/qVURG9BUT6RsCRFUn0CyGiUKoy45o9K/mJA
HmbrNtrUB6ckrYLF75Y50nUNsBVHUDw8yQymmiOBT1gc/KM5s1xTz44LMwIDAQAB
-----END PUBLIC KEY-----";

You need to encrypt with the public key and decrypt with the private key. That is how asymmetric encryption works. In RSA "encrypting" with the private key is actually signing and "decrypting" with the public key is verification of the signature.
The other thing is that you don't reverse the Base64 encoding properly. So you need to first decode and then decrypt:
$plainText = $rsa->decrypt(base64_decode($cipherText));
The keys you presented cannot be used with this code, because they have a different modulus. You can generate the keys this way:
$rsa = new Crypt_RSA();
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
$keys = $rsa->createKey(2048);
$private_key = $keys["privatekey"];
$public_key = $keys["publickey"];

Related

PHP : Get private key from a single line private key

I am trying to create a JWT token. The other server is storing the public key in a single line and using that for validation.
Also, the public key being used for validation is in single line.
So, to generate the correct JWT token, what I think is I should also use the private key in a single line (may be with \n or may be without).
I am using openssl_sign to generate the token, which uses openssl_reource as key. I get that paramter from openssl_pkey_get_private.
But problem which happens in this case is, it either accepts the pem file path, or the key in PEM string format. So, if I pass the private_key as a single line, it doesn't give me the required output.
So, how can I resolve this. As I see other language libraries able to generate signature by passing private key in a single line.
In PHP the key can be formatted with line breaks or as a one-liner (with \n). Both works. In the following example I use a 512-bit encrypted RSA-key for simplicity (although in practice a larger key (>= 2048 bit) must be used for security reasons):
<?php
// Private key: 512 bit for simplicity
// Passphrase: MyPassphrase
// openssl genrsa -aes256 -out private.pem 512
$privKeyEnc = "-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,8F2D6F9594B3D379BF9D9748BD174458
RP2fyz1VNBKHiCadC5B9fjxV7z7AMAqbsN2vykFfPhdUFsxlJaecEeTMT7s6IbZN
Pr80+ljLjJ0SxJiK+j8DAc/Wrf+qyYUFcWbsvOhUIPyB5ww9+mEeIERJCigsyZJ7
k/Apau/BypdC9vCXKB3wM9FcmvP1g/ZwVoXfN3TIPEfWTktvuf74yFNoIaVbZAK/
+tzAGduu9wLkr6WTq4Isqy/IPjVCp9VwH1wNnz+hjkO7oELcCpFieIvAidUMKBR9
EdexLQCimbOl2wlfRNLincK8+FDOVWx6ElFFQlhzyWQCt8ed1fdiAggKxOco4Ww2
tFjIzaO4KXlbc9JFGd9PzigpftN/aHbk3c+x0E+3q5u8eySai4vgk38s1KaE7rn/
rarCgtGxOlbbTkI3opkjIrGlrsEyexKtS23mI/Dgcco=
-----END RSA PRIVATE KEY-----";
// One-liner using \n
$privKeyEnc_1Line = "-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-256-CBC,8F2D6F9594B3D379BF9D9748BD174458\n\nRP2fyz1VNBKHiCadC5B9fjxV7z7AMAqbsN2vykFfPhdUFsxlJaecEeTMT7s6IbZN\nPr80+ljLjJ0SxJiK+j8DAc/Wrf+qyYUFcWbsvOhUIPyB5ww9+mEeIERJCigsyZJ7\nk/Apau/BypdC9vCXKB3wM9FcmvP1g/ZwVoXfN3TIPEfWTktvuf74yFNoIaVbZAK/\n+tzAGduu9wLkr6WTq4Isqy/IPjVCp9VwH1wNnz+hjkO7oELcCpFieIvAidUMKBR9\nEdexLQCimbOl2wlfRNLincK8+FDOVWx6ElFFQlhzyWQCt8ed1fdiAggKxOco4Ww2\ntFjIzaO4KXlbc9JFGd9PzigpftN/aHbk3c+x0E+3q5u8eySai4vgk38s1KaE7rn/\nrarCgtGxOlbbTkI3opkjIrGlrsEyexKtS23mI/Dgcco=\n-----END RSA PRIVATE KEY-----";
// Public key:
// Passphrase: MyPassphrase
// openssl rsa -in private.pem -outform PEM -pubout -out public.pem
$pubKey = "-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMjYQLbdIVgKX1mSyKijOIpmlB9YWui1
KoCniRNHUPEsxth+o9fZXZMo1gzh9ZlFs6VLiyU7kv2+5QElOnhNzwcCAwEAAQ==
-----END PUBLIC KEY-----";
// One-liner using \n
$pubKey_1Line = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMjYQLbdIVgKX1mSyKijOIpmlB9YWui1\nKoCniRNHUPEsxth+o9fZXZMo1gzh9ZlFs6VLiyU7kv2+5QElOnhNzwcCAwEAAQ==\n-----END PUBLIC KEY-----";
$dataToSign = 'The quick brown fox jumps over the lazy dog.';
// Signing
//$privateKey = openssl_pkey_get_private("$privKeyEnc", "MyPassphrase"); // also works
$privateKey = openssl_pkey_get_private("$privKeyEnc_1Line", "MyPassphrase");
openssl_sign($dataToSign, $signature, $privateKey, 'sha256');
$signatureBase64 = base64_encode($signature);
print("Signature (Base64): ".$signatureBase64."<br>");
// Verifying
$publicKey = openssl_pkey_get_public("$pubKey");
//$publicKey = openssl_pkey_get_public("$pubKey_1Line"); // also works
$verified = openssl_verify($dataToSign, $signature, $publicKey,'sha256');
print("Verification: ".$verified."<br>");
/*
Output:
Signature (Base64): KVuUd+xy6at0emmhF20rbiD9lWzIN9euwKbeEm7aMvxqEkJ68HrjAoDJ37R3QGPI24woXY3TON9pahAhx+YNhQ==
Verification: 1
*/
?>

RSA256 public key from Google certs failing for one key

To authenticate a google oauth2 token, I'm generating a public key for kid "b863b534069bfc0207197bcf831320d1cdc2cee2" from the modulus (n) and exponent (e) from:
https://www.googleapis.com/oauth2/v3/certs
{
"alg": "RS256",
"n": "8h6tCwOYDPtzyFivNaIguQVc_yBO5eOA2kUu_MAN8s4VWn8tIfCbVvcAz3yNwQuGpkdNg8gTk9QmReXl4SE8m7aCa0iRcBBWLyPUt6TM1RkYE51rOGYhjWxo9V8ogMXSBclE6x0t8qFY00l5O34gjYzXtyvyBX7Sw5mGuNLVAzq2nsCTnIsHrIaBy70IKU3FLsJ_PRYyViXP1nfo9872q3mtn7bJ7_hqss0vDgUiNAqPztVIsrZinFbaTgXjLhBlUjFWgJx_g4p76CJkjQ3-puZRU5A0D04KvqQ_0AWcN1Q8pvwQ9V4uGHm6Bop9nUhIcZJYjjlTM9Pkx_JnVOfekw",
"use": "sig",
"kid": "b863b534069bfc0207197bcf831320d1cdc2cee2",
"e": "AQAB",
"kty": "RSA"
}
I then create the RSA 256 public key in php with:
$rsa = new Crypt_RSA();
$modulus = new Math_BigInteger(base64url_decode($cert["n"]), 256);
$exponent = new Math_BigInteger(base64url_decode($cert["e"]), 256);
$rsa->loadKey(array('n' => $modulus, 'e' => $exponent));
$rsa->setPublicKey();
$public_key = $rsa->getPublicKey();
This generates public key:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuopEuQyOKMsQq90I/5on
1nNBPc7stMvsN1HC+Pgyu8nJ1qWwaAAqIv4edo2oG/Bo3eg6p+OjG3nbFL62S6hE
aJLUVfxhW5GQuxQlsvaA2MsZuZCRyKTv8bm641wM+biGVZLiDsLRylVdpxf4aGa9
9zZw+QZMVKL4f9B4SunyTugTaCIu8LBOQesCQp/QJaUjqMDhfEvoFQXiCn6zo3rW
EWBiKxiFBizH9jSfWimJecFhn0Vlv/Vs7pRb0X2y66VS3gTvR6/A3ooNz3tYAJPM
GoE8fAiEghYXXHjmWmgdRx9Qt9sa/ACwv7yx0Th27fw+rrsMSrUyaqRpn/fjIMTu
sQIDAQAB
-----END PUBLIC KEY-----
This same method worked with dozens of other RS256 kid's from google, but the public key does not work with this particular kid.
I am verifying the signature with:
openssl_verify($payload_to_verify, $safe_signature, $public_key, OPENSSL_ALGO_SHA256);
Which responds with '0' for failure.
Edit #2: Found google's version of the public key at:
https://www.googleapis.com/oauth2/v1/certs
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8h6tCwOYDPtzyFivNaIg
uQVc/yBO5eOA2kUu/MAN8s4VWn8tIfCbVvcAz3yNwQuGpkdNg8gTk9QmReXl4SE8
m7aCa0iRcBBWLyPUt6TM1RkYE51rOGYhjWxo9V8ogMXSBclE6x0t8qFY00l5O34g
jYzXtyvyBX7Sw5mGuNLVAzq2nsCTnIsHrIaBy70IKU3FLsJ/PRYyViXP1nfo9872
q3mtn7bJ7/hqss0vDgUiNAqPztVIsrZinFbaTgXjLhBlUjFWgJx/g4p76CJkjQ3+
puZRU5A0D04KvqQ/0AWcN1Q8pvwQ9V4uGHm6Bop9nUhIcZJYjjlTM9Pkx/JnVOfe
kwIDAQAB
-----END PUBLIC KEY-----
My generated public key is different. Why my generated public key is wrong?
I confirm that the key is not correctly converted by the RSA Crypt package.
Wrong key
Good key
I tried to convert that key with another application (web-token/jwt-app) and I got the same result as the one provided by Google.
curl -OL https://github.com/web-token/jwt-app/raw/gh-pages/jose.phar
curl -OL https://github.com/web-token/jwt-app/raw/gh-pages/jose.phar.pubkey
chmod +x jose.phar
./jose.phar key:convert:pkcs1 '{"alg": "RS256","n": "8h6tCwOYDPtzyFivNaIguQVc_yBO5eOA2kUu_MAN8s4VWn8tIfCbVvcAz3yNwQuGpkdNg8gTk9QmReXl4SE8m7aCa0iRcBBWLyPUt6TM1RkYE51rOGYhjWxo9V8ogMXSBclE6x0t8qFY00l5O34gjYzXtyvyBX7Sw5mGuNLVAzq2nsCTnIsHrIaBy70IKU3FLsJ_PRYyViXP1nfo9872q3mtn7bJ7_hqss0vDgUiNAqPztVIsrZinFbaTgXjLhBlUjFWgJx_g4p76CJkjQ3-puZRU5A0D04KvqQ_0AWcN1Q8pvwQ9V4uGHm6Bop9nUhIcZJYjjlTM9Pkx_JnVOfekw","use": "sig","kid": "b863b534069bfc0207197bcf831320d1cdc2cee2","e": "AQAB","kty": "RSA"}'
Best would be to warn phpseclib/phpseclib about that issue.

How to Encrypt password by using Public Key (.pem) file in php

I have a Public Key(.pem) file and password to encrypt to use.
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1aMZtnww+noqWmOfobCE
ivRr5Iih9im26pyk1P2M/ofqke+4ddPDtD4HcfhOuDc0q6KNmuTHwFf+uIjYyIzk
SMnTc+P2jkYfw1zydexTX3b2fKyF6a6y3irJhtKx+PN5y/LOmfTch+A0ycfpCb4E
XvG8hlfWpMpSIJXq/ToPKY+AxFHbIfpRAhOQognLQiogSNe1gZgtDwOVyNjg+c/p
2p8e3SAOpOOr7NRA6Yw4AXn5W4/0mwAlFr5+tDlQqGSyi9VzEuGU1K+0tdj37bnc
/iXe59TH+9uMnZ0utrDmRzMLWBhJiqRYSskqScPlE3nc0tNblXI/n2pSysjt2YDl
eQIDAQAB
-----END PUBLIC KEY-----
But I am getting value [] for encrypted password. It doesn't get any error but return byte[] values is seem to wrong.
I have code below if it wrong plz help me..
<?php
$key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1aMZtnww+noqWmOfobCE
SMnTc+P2jkYfw1zydexTX3b2fKyF6a6y3irJhtKx+PN5y/LOmfTch+A0ycfpCb4E
XvG8hlfWpMpSIJXq/ToPKY+AxFHbIfpRAhOQognLQiogSNe1gZgtDwOVyNjg+c/p
2p8e3SAOpOOr7NRA6Yw4AXn5W4/0mwAlFr5+tDlQqGSyi9VzEuGU1K+0tdj37bnc
eQIDAQAB';
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->loadKey(array(
'e' => new Math_BigInteger(65537),
'n' => new Math_BigInteger(substr($key, 0, -4), -256)
));
$ciphertext = $rsa->encrypt('password(testing8)');
echo bin2hex($ciphertext);

How to encrypt data using RSA public key in IOS

I am using phpseclib lib for rsa encryption
require_once = "./Crypt/RSA.php"
$rsa = new Crypt_RSA();
$rsa->setHash('sha1');
$rsa->setMGFHash('sha1');
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
// Code to Generate the public key and private key
$keys = $rsa->createKey(1024);
extract($keys);
// Base 64 encode Public and Private key
$publicKeyBase = base64_encode( $publickey );
$privateKeyBase = base64_encode( $privatekey );
// Private key
var_dump( $privateKeyBase );
echo "---------------------------------------------------------</br>";
// Public Key
var_dump($publicKeyBase);
Generates public key like follows in bae64_encode format:
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBbndac2s5QXpSUndEWXN5dksxLzYNCk11TTRVMlpkL3dIV1RaY01uVDR2ODdyaGVuMTZZM2szeDZ0OFJIWTBUY3hRZHJrQjIvVTZpQUdyRFMwaWppTFENClZLWmJtU1cvZ05xdk5UR0hUUlR3T0tlaVhadHNOQU01U1V2YWtVcytrMzBhd0t5U2NIV2xjL0tvMWJpZlBpYmUNCnZyM2xBTmhyMlFhT3kzY2dvbWszR040M1dpN01MTXFTMVY3M1Q4RUxYeGtDYkErRDA0WWgrZjFURVNRQkhwakoNCkIwYklBS0JKMkFYTE9Ieis1UUdFaXlGVGpMZDZsT3NpaW9LTThqbXk1R0JIdlladld0akt6RG9uVGNSQ3FpWisNCm1HYTNka1JyUkVtRDgvOXNRN0EzZldqeStBWWl1czdsRTRFZURCMWZzTFp2TVhKTzdFMGdrbk1kVGpsT3M0MU4NClhCNVVLWUZiZlJ4UWZLZlV0Y1NlTHd1ekxQMXdYWEVBRkdHcGJEYjVmZnUzR0hycUFOQWI1OUh3ZzgweTN5OVcNClRXTk4rTklIQ1ljZ2VpY01Zb2p4UC93bkUxMStwenpCNTFLZ3NEMFZrcTNVeGFKcGlaaDNBd01pdVB3cGcvdDINCnBPMWt0c3cxZDFZc2M1enkxcklIQkl5RHIxK1A5dUNadmR1aDZrRk1oQmxyaStna3poV29zRHpUWUV4SGZVQ3gNCnluZnNwRDVudmVPTzJsalBmMUpuTjlGNXEwdDR2Uk9KSllpTWhYLzJFSFpSMHI2R0pJQUFTbDlCUWJiaUZkakYNClBaQW41MFBTN0JOTXEwem9PV1NULzdzS0FtR1hHNXd1L3VEanJSRnBKaW8wMjFOTzJOWGlKVkpuOW1QcGxVSUUNCnErdGFlbnd4TUtPY3BtNUFTZjZTS0k4Q0F3RUFBUT09DQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0=
How to encrypt in IOS using above generated public key
Private key:
LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUkFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTNHdnZ2txQWdFQUFvSUNBUUNmQm15VDBETkZIQU5pDQp6SzhyWC9veTR6aFRabDMvQWRaTmx3eWRQaS96dXVGNmZYcGplVGZIcTN4RWRqUk56RkIydVFIYjlUcUlBYXNODQpMU0tPSXRCVXBsdVpKYitBMnE4MU1ZZE5GUEE0cDZKZG0ydzBBemxKUzlxUlN6NlRmUnJBckpKd2RhVno4cWpWDQp1SjgrSnQ2K3ZlVUEyR3ZaQm83TGR5Q2lhVGNZM2pkYUxzd3N5cExWWHZkUHdRdGZHUUpzRDRQVGhpSDUvVk1SDQpKQUVlbU1rSFJzZ0FvRW5ZQmNzNGZQN2xBWVNMSVZPTXQzcVU2eUtLZ296eU9iTGtZRWU5aG05YTJNck1PaWRODQp4RUtxSm42WVpyZDJSR3RFU1lQei8yeERzRGQ5YVBMNEJpSzZ6dVVUZ1I0TUhWK3d0bTh4Y2s3c1RTQ1NjeDFPDQpPVTZ6alUxY0hsUXBnVnQ5SEZCOHA5UzF4SjR2QzdNcy9YQmRjUUFVWWFsc052bDkrN2NZZXVvQTBCdm4wZkNEDQp6VExmTDFaTlkwMzQwZ2NKaHlCNkp3eGlpUEUvL0NjVFhYNm5QTUhuVXFDd1BSV1NyZFRGb21tSm1IY0RBeUs0DQovQ21EKzNhazdXUzJ6RFYzVml4em5QTFdzZ2NFaklPdlg0LzI0Sm05MjZIcVFVeUVHV3VMNkNUT0ZhaXdQTk5nDQpURWQ5UUxIS2QreWtQbWU5NDQ3YVdNOS9VbWMzMFhtclMzaTlFNGtsaUl5RmYvWVFkbEhTdm9Za2dBQktYMEZCDQp0dUlWMk1VOWtDZm5ROUxzRTB5clRPZzVaSlAvdXdvQ1laY2JuQzcrNE9PdEVXa21LalRiVTA3WTFlSWxVbWYyDQpZK21WUWdTcjYxcDZmREV3bzV5bWJrQkovcElvandJREFRQUJBb0lDQUZWNlk0UjBaZ3FneXlVaE5vc1BGUEtqDQpkaFJHTXdJdVg1M25NazJYTHJsSTI0ZzJ5RUdOMTdESStZdm5LYWdqeWFCM1E0dVMzanBiQXpHYThEY01lWVQyDQp3c2VvSmE3Q1hXa3ZUVFhlcWwwWnBrbkFrRUhJOWRMekpmSHhTeHFHSllvcGVMRmdXMlhlcW1mdXpCSGhYTnVVDQpRUExhWWVZUEExUlVuVU1QWVNGSjJPRHR4S3ZTMjJnN21wM1EreWJMejZSOEZuVHRaWGYxZGVBQnhXUkg1YzYyDQplaXp6KzUxVlIrMytLaGk0WHlGVjhZM3kxYjRVUWNYSDlMRUMyS2l2SkFDNHNVUll3WEZUVk9zVk1tdzVNdFVDDQphVnoxMjk2aDBYNm03ZS9ZV1l0Y2pUVktQd0xBMFJ0UnpPL2dIaDVqZ1pOSGlTcTFMbXZwMm5mQWtCQXRSTVlGDQpVbnY4MDRKYXc5Z05Ha0VJNFFGVkhrcjNsZXEvTjN2cDNUVGxDb3drSVBqbmpkS2MvRjM3Qnh6Q1hqQUpZd1A4DQpWTjBoblF5WGxEZnNIVGJaQVRPWXFOVmN1R3pudnh3Wkd1bE9mcWNvUW41SXEycDRlM0hVVm12VHNLaXhMSnhxDQpPdDFwZkhBVWVra1l5eW1kUnVlQ3cxVElyTTdrYXA0cU9aNVFzTmhkZXRkd0RhRFVYak1OZWlGVm1DSnI0amdDDQowSXkwZStWTkVOQlVaZHR3M2NSNlFxRXc0OGkzS3Z5S2VhYi9ZNTIrWjZ4Q05vUkZkNjdwSDlVSlJaOGhaQ2ZaDQpuYS9KRXJEZDFpN0ZTZVNHN0JrbG02Wk1pVDFIT2YyZ2xqeW1kUmhUYkxxNGRndW81S1ZhQXdyRjYyZ0hFSnlRDQpFeE1yejRCR0hTUmR0eDI2SVIzQkFvSUJBUURLRnYxUmdpMjdnaTZjOE40bHdlUHZzRGU5UVp5SjB3cFJLblJRDQp1WlQwZGlMZllYTGIyNWNmSnZpZ2hmUGhZaDFoOXRTOUltdi9hbGNJdDhGOUJmWkdQWFdGaGlLbmdPUGUwbFY4DQowaUdkeDY3SVFiYUpMZ2Z3TjlSaC9lRW4yTG5HSDB3U21tbnd5cXJuQk1CL2N4ZHJsZFhSaHI4R0hKSXdUSWM0DQorVlJNVm1JcUpqdVBnSFNWQXdFYkRGdnE5alVUcmE0TkdkSzNrSUhMNm8vNnc3MXFlamQwTmIyODg1RTBVbUtpDQpHUnp6dzYwT2c0dXJ0M1dCOVhrYnpCNGkvZW9qMHJ2N3hySzNSNkhtMi8xOStKNFBzUE90ZFBpZm05dUZCRnE3DQp5ZjVGaUd6S05QUnFzc2FMUDY3Z0kvVmVDMkd6c1RMWXJNbkdEK0VaNVBCQkxJRHZBb0lCQVFESmNudHdzb1JHDQpGVWIyOS9FMURPeDBMOGY4Q0RoOWhqNGZzTktocytEUHdQRGxCVlpyZjRLNC9FalNhUmxob0N0VWRwTkYyYndrDQpYdkUyWjluYU1Jb2UwV3lQb0xnSWdPM2h3K3AybXBlRloxWUo5Q3ovclFTam1QUml1NnNSbkZvU3Q3WERXaDIvDQphMW5HNlZhYWFEcjl4MjZDZGwrNzVkWE5QbUFIYUhxa3BZL2VSSEpuUERieTRkOWRkbldLRFRXQVVuaGdTaGNsDQpTdG9EWG90dG9uNmNITm9rNGVIT0N6NTIySzRrTHRDUndVOTNuSVRmcmdKakpQSmdhNnFOKzBxaHJ5bWVkeHdhDQo5cmtvbDRnNHg0V09nWXNkcjFFbXhlM25udVdHamFUQThxVmRaZTlUdndwQmxZNmQ2UjRqckVvMGhrUFJLaUR0DQozSk5BcXFkZG81SmhBb0lCQVFERlNlUkw2bmFURStoRnRyQm8wL3llUnI1anVPWUZkMDRmSnY4ZXY4NDNTZzJKDQpYaTB2amhUZWlNRTRsUTBkL3hjSVNGd3Z1S2NPVnRaWTRHdTRqbFY3QlF6eUtaMHpRWlUwTnNyV2JKMzgxckEvDQpPRWZuYkZTN293Vm9GTjMyZEpJSVpRMXpLK1E0K3VJVlhvSSs2akQzQ3ZRTzlTa1A0bHlsWWxDd3dsZ1ZuazkvDQpMb3YrOER6Z0xHcXI2VWppL1RHYjRIYUd1NnNISWNCVlBzMEkxb2JZcUMveTkzUWdQdmlHeDljYXdNR1BDSHl1DQpLcVgwSWNwSjhVY21hQU1UemljQ2lmeVRNOHZOT2RWSTk0TmxzNDA3YkZpNEFmV21mQlcycWlXYUp2eGhEV3FIDQpqV0wvdDBBMU9ScVVId2F2cFJUZ3hDRUxmc1FNNC91eHQ5c0ZCVmxwQW9JQkFRQ1l2V2ZoQkVvTXhYZEFMTEREDQo4NStaWE4wNk9KVjBmNE85RFpvM0p5Y3UvdkRvQlVzSVNPODZDWGZCcWhTbmxBVW1qcDJOMmRDd2x4ZzNremg0DQpHbE92bUVUREJpNWpyRFl4OXhWZ2hraWF5c1pPMThnQ3VCSUxaUjd2ZWJIMHNXTU9UQ0xTRXhMNUg1RTdvNUtaDQprcXdmM2NYcHY0MUk3N1JUWVpiNEp2ek91QVhFbG90VHdURThxWXh0MWpLNjBOY2ZDK2pmd1cyWlJnN1ZmU3NrDQpubzkzR04xQ0Y4N1pKbWRmUDEyU2E3aVN1MHJndTFsNEsvejlaWGN0S3BWdi8vZ1BiYnVWdm1RZUFiSlVsOGllDQpuSkdrZ282VG5HbGdoN1NoNlRYSTlyN1QyV2NPMFFwTXFrNUJlZjlmdGZDM1Jad2lCU2VJZ1hQa1JsbVVMNUNsDQpEREFoQW9JQkFRQ3hkN2dSL2srZGJIN2ZkLzlFdVdLa0kvQ3V2dlJwVGlXaXVkcXp1N2ZKbTN0bkpzUDBkMFU0DQoxSzc4MU1tLzdlT0JqamxwZGxVWXkzOXhPdzlhc3h6R1Z5cURNSWVOUzNpcHlrczRmV0FOMGZpUFZUUmlFMVhVDQpBSFBwQkorSE1XaUIxdEVGQ1lPYXpRMEE4ZHlxNm5VWFVlMGJNOWhxWWt1cnUvblBIRzdndklIeVlrT3hrRzViDQprOFZHd2oxbHpQZVlxSXowdS80dGlBcy80bGc3MEtxSG9MMmwwUFVpZlZEY0JERmVPSEpYTms5ZWI2eGozcnhnDQpYc3B2L0N5S2dTc0pqVWpmRDl1WWFuZTdjL0dqWkM4cjI1UHozQjBzY3llWGlQYnNnajNhNkE4eGp5NGNCWG9hDQpZTzdhK1RqZGlSVVBXa2gwcWRnN0FQZGVCRDc3RVB5SQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ==

PHP : Retrieving keys using openssl

I manage to generate private / public keys using the following script :
$res = openssl_pkey_new(array('private_key_bits' => 2048,'private_key_type' => OPENSSL_KEYTYPE_RSA));
openssl_pkey_export($res, $privkey);
file_put_contents('test.private.key', $privkey);
$pubkey = openssl_pkey_get_details($res);
$pubkey = $pubkey["key"];
file_put_contents('test.public.key', $pubkey);
The generated files :
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwQ5L0JQ2G5zGhC4uDISo6krN/mKrBuULYhrVL9Zdve+C9DuH
6uDTRCC07PvIKcHVj13vKB4YvRlwCCAxHg5p34P3W9vjmrI91rdVJ31noRvJ/i5Z
jNBfy7c8NrIOA6m4gicfPbozuQU741jLSncdQuyZRrADbFWppIz/mLm5WDZk6+NU
yAM2o0jvDsKE7i3sT+IKJpjUC8mE+RONIooNtHB3GJarsCKg5L6e0EaGXlVp9Mez
lSSn/Z5p1Wu3GJq02lNGLT5BVgCfE7ajBDZWRDG+Mbp4/YCt/zXz5XWm2/BxD78c
2wH3qMs/bIjvq5MTta4E2VQTSCxI5fMjRUf5QQIDAQABAoIBAQCvZuXLJF3kyJQ1
FCASj5VJCZ4POmZZZVDqWabIR+Pz5eD9NflPleVdSLoZdslt5wa5s4bO1El1xd7c
AyOdQ0s+IRBlDWvF6Zv1saxUrMOyxSTJJCOIpOnklR7IMw44lcNlvVXNJ5hGylKX
RN2vUnnrjDvW1aTGkS4Iq3KuuE+FrJIOm9Lb7z4Nj7BwmgwUtbB5NQKFDVohPp+w
pFGPHrN6dCy+qoSlY/IP89u6f7g9HBEM+n91uO6dQwSb/YxBROLMffXNJKA+UKex
UIIZlrPUcFN+yDVbQBmMFA3PYbBvwqZfpwzslIoUS+CGE/MorbW77/Qy2P4BC3/D
h8dmRDiBAoGBAOIDLHoMwT3FP+jlgZiAktQjShGRQJ+Li66L1nNIAJSeE8Nna5Sk
E3R1TBIZBmAGUZJ00POUWUMooAQIGF597hnFuENZIYpvulkKDCCUVx24kZDbyady
TcWdnEZfRmun5H7JfTlJl1HjqgGxKOc3ek/xDxoqiNf2WqScIom+dWndAoGBANqr
tQZyvpwv8FZVgkmteCCJb5NZzs04NzrT/i792/mL9Y45VxneLJVbXrAmQw/ClfVi
Z04NamqeOvVwUByoxWvZwLtyNt2dhpmtYlWuMRdo505BW1I75UIZYbWgZTtVq+PR
mf0SxNYXTsJQsqTTkqHQOMOHj8JyoAG1Z04J4qC1AoGAEkDpXa4cCU4d/ERU9Ckm
MqXq/II7sucFUAKRPlxJV7dwpy56HNYnkBdNHoUQ475+5hIzMgkAMJFeYxT4SuFm
0oQKfr37HIArj7dlBViVtJvMfeOSZMixiU1SasiVGmrD5I2HZJIR+5Yki+BwCkSL
x1sTuixHQxHtfi/yBifwua0CgYBPaGFRmSOc5k+5mk244bSo5B/Pe6J8pbhwtYEt
oWRbh7bBUhNOQn8gMdD92Lcrpvb76CMplfeaBiHU9VcyQRuIIcg6iaxg6A50CiGW
ia4sGR0+Lr+x6ixDx6HS6g8479B+56Oq4kD2mfow2Es3TdmGx22Fm9nZu/RdCnoc
Pby9rQKBgAak6zdKdMHzmHd+r2rbCTqT/NOIoip1zYpEGpiginkZcpy7Mz4iBL1Y
H7a2sa5k9Pykm2sQYoFPM8vn7halDcuAV7mjiV4XyiM5wRRWHTqSoUgjElexE0W5
HoQvWv10NBFqySMSfCm+YFXZGY17usxAJPSIySHzoTVRJEIjAw0G
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQ5L0JQ2G5zGhC4uDISo
6krN/mKrBuULYhrVL9Zdve+C9DuH6uDTRCC07PvIKcHVj13vKB4YvRlwCCAxHg5p
34P3W9vjmrI91rdVJ31noRvJ/i5ZjNBfy7c8NrIOA6m4gicfPbozuQU741jLSncd
QuyZRrADbFWppIz/mLm5WDZk6+NUyAM2o0jvDsKE7i3sT+IKJpjUC8mE+RONIooN
tHB3GJarsCKg5L6e0EaGXlVp9MezlSSn/Z5p1Wu3GJq02lNGLT5BVgCfE7ajBDZW
RDG+Mbp4/YCt/zXz5XWm2/BxD78c2wH3qMs/bIjvq5MTta4E2VQTSCxI5fMjRUf5
QQIDAQAB
-----END PUBLIC KEY-----
Could someone tell me how to retrieve my keys, in order to encrypt / decrypt files. I'm trying the following :
$privkey = openssl_pkey_get_private('file://test.private.key')
$pubkey = openssl_pkey_get_public('file://test.public.key')
But these functions return false...
Thanks
Ok sorry forget about this post, I just tried to make it hard where it's very simple : A file_get_contents('test.public.key') is enough to retrieve the keys ;)

Categories