2017-10-03 1 views
1

est-il un moyen/quelle est la meilleure façon de convertir une clé openssl générée en php, sans utilisation directe de shell, dans une clé publique RSA que je peux utiliser avec quelque chose like cela pour crypter les données que je peux crypter avec ma clé privée.Convertir la clé openssl de la clé publique rsa en php

Merci

Répondre

1

Selon this example, vous pouvez directy obtenir la clé publique lorsque vous créez la clé avec fonction openssl_pkey_new():

$config = array(
    "digest_alg" => "es256", 
    "private_key_bits" => 4096, 
    "private_key_type" => OPENSSL_KEYTYPE_RSA, 
); 

$res = openssl_pkey_new($config); 
openssl_pkey_export($res, $privKey, 'mypassphrase', $config); 
$pubKey = openssl_pkey_get_details($res); 

$pubKey = $pubKey["key"]; 
var_dump($privKey, $pubKey); 

Si vous avez directement la clé privée, vous pouvez récupérer la clé publique avec openssl_pkey_get_private():

$privKey = file_get_contents('/path/to/private.pem'); 
$res = openssl_pkey_get_private($privKey, 'mypassphrase'); 
$pubKey = openssl_pkey_get_details($res); 
$pubKey = $pubKey["key"]; 
var_dump($privKey, $pubKey); 

NB: Si $ res est faux, vous pouvez obtenir des erreurs avec openssl_error_string:

$sslError = ''; 
while ($msg = trim(openssl_error_string(), " \n\r\t\0\x0B\"")) { 
    if (substr($msg, 0, 6) === 'error:') { 
     $msg = substr($msg, 6); 
    } 
    $sslError .= "\n ".$msg; 
}