如何生成公钥和私钥对?

时间:2014-08-18 20:21:15

标签: php encryption-asymmetric

我已经阅读了PHP中的非对称加密。我理解mcrypt方法。我理解有两个密钥(公共和私人)的要求。我唯一不明白我在哪里以及如何生成这些密钥对?任何人都可以解释密钥生成的过程吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

你需要a PGP library来做你想做的事,但这很简单。要创建密钥,请使用:

<?php

require dirname(__FILE__).'/../lib/openpgp.php';
require dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';

$rsa = new Crypt_RSA();
$k = $rsa->createKey(512);
$rsa->loadKey($k['privatekey']);

$nkey = new OpenPGP_SecretKeyPacket(array(
   'n' => $rsa->modulus->toBytes(),
   'e' => $rsa->publicExponent->toBytes(),
   'd' => $rsa->exponent->toBytes(),
   'p' => $rsa->primes[1]->toBytes(),
   'q' => $rsa->primes[2]->toBytes(),
   'u' => $rsa->coefficients[2]->toBytes()
));

$uid = new OpenPGP_UserIDPacket('Test <test@example.com>');

$wkey = new OpenPGP_Crypt_RSA($nkey);
$m = $wkey->sign_key_userid(array($nkey, $uid));

print $m->to_bytes();