openssl密钥生成 - php。如何获得所有价值?

时间:2012-09-19 05:29:10

标签: php encryption openssl rsa

我正在尝试实施rsa加密&使用OPENSSL解密。如果有任何问题,请查看下面给出的代码并告诉我。

<?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);

?>

这里我没有得到索引$ pubkey [“rsa”] [“e”]的值。 任何帮助将不胜感激......

预感谢...

1 个答案:

答案 0 :(得分:1)

我会使用phpseclib,pure PHP RSA implementation。例如

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

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

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