2012-09-19 2 views
2

J'essaie d'implémenter le chiffrement rsa & en utilisant OPENSSL. S'il vous plaît jeter un oeil sur le code donné ci-dessous et faites le moi savoir, si elle a un problème.openssl génération de clé - php. comment obtenir toutes les valeurs?

<?php 
function pr($val){ 
echo '<pre>'; 
print_r($val); 
echo '</pre>'; 
} 

function strtohex($string) 
{ 
    $string = str_split($string); 
    foreach($string as &$char) 
    $char = dechex(ord($char)); 
    return implode('',$string); 
} 

$res=openssl_pkey_new(array('digest_alg' => 'sha1', 'private_key_type' =>   OPENSSL_KEYTYPE_RSA, 'private_key_bits' => 1024)); 

// Get private key 
openssl_pkey_export($res, $privkey); 
$data='test'; 
echo 'prvt<br/>'.$privkey.'<br/> ends<br/><br/>'; 
// Get public key 
$pubkey=openssl_pkey_get_details($res); 

pr($pubkey["key"]); 
echo 'prvt<br/><br/>'; 
//var_dump($pubkey["rsa"][""]); 
pr($pubkey["rsa"]); 
echo 'prvt<br/><br/>'; 
$n=strtohex($pubkey["rsa"]["n"]); 
echo 'n<br/><br/>'; 
pr($n); 
echo 'e<br/><br/>'; 
$e=$pubkey["rsa"]["e"]; 
pr($e); 
//$binarydata = pack($pubkey["rsa"]["e"], 0x1234, 0x5678, 65, 66); 
//pr($binarydata); 
echo 'd<br/><br/>'; 
$d=strtohex($pubkey["rsa"]["d"]); 
pr($d); 
echo 'p<br/><br/>'; 
$p=strtohex($pubkey["rsa"]["p"]); 
pr($p); 
echo 'q<br/><br/>'; 
//var_dump($pubkey["rsa"]["q"]); 
$q=strtohex($pubkey["rsa"]["q"]); 
pr($q); 

echo 'dmp1<br/><br/>'; 
//pr($pubkey["rsa"]["dmp1"]); 
$dmp1=strtohex($pubkey["rsa"]["dmp1"]); 
pr($dmp1); 

echo 'dmq1<br/><br/>'; 
//pr($pubkey["rsa"]["dmq1"]); 
$dmq1=strtohex($pubkey["rsa"]["dmq1"]); 
pr($dmp1); 

echo 'iqmp<br/><br/>'; 
//pr($pubkey["rsa"]["iqmp"]); 
$iqmp=strtohex($pubkey["rsa"]["iqmp"]); 
pr($iqmp); 

?> 

Ici, je ne reçois pas la valeur de l'indice pubkey de $ [ "rsa"] [ "e"]. Toute aide serait appréciée ...

Advance grâce ...

+0

Alors [ "rsa"] [ "n"] ne imprime correctement je suppose? Les champs suivants s'impriment-ils correctement? –

Répondre

1

J'utiliser phpseclib, un pure PHP RSA implementation. par exemple.

<?php 
include('Crypt/RSA.php'); 

$rsa = new Crypt_RSA(); 
$rsa->loadKey('...'); 

$privatekey = $rsa->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW); 
Questions connexes