0

我有以下公钥:

//Beginig of the PBK
30819f300d06092a864886f70d010101050003818d003081890281810095e15f182ec7b6e84786c0ee54e3bb72af0461e6fd859a3625f38dcd3fdec80dfcc51a44756ec7cd6c14b430d55670460c5143efadd1ade7380e890e9957d6e6b38f35412862cc955e04d1928f21c0d2f7bc48c3855276f0e7c1b45a558e3a013b969cbfaebca42b748e64bff787f86ec5f0adcd94428c4ab8ca6d2b710d785b0203010001
//End of the PBK

它是 X509 结构中的 PKCS#1 编码公钥。所以我的问题是我如何在 PHP 中从这种 X509 PKIX 格式中提取公钥以在 RSA 加密中使用它?

谢谢。

4

1 回答 1

0

使用phpseclib,一个纯 PHP RSA 实现

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

$cert = pack('H*', '30819f300d06092a864886f70d010101050003818d003081890281810095e15f182ec7b6e84786c0ee54e3bb72af0461e6fd859a3625f38dcd3fdec80dfcc51a44756ec7cd6c14b430d55670460c5143efadd1ade7380e890e9957d6e6b38f35412862cc955e04d1928f21c0d2f7bc48c3855276f0e7c1b45a558e3a013b969cbfaebca42b748e64bff787f86ec5f0adcd94428c4ab8ca6d2b710d785b0203010001');

$rsa = new Crypt_RSA();
$rsa->loadKey($cert);
echo $rsa;
?>

返回这个:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCV4V8YLse26EeGwO5U47tyrwRh5v2FmjYl843N
P97IDfzFGkR1bsfNbBS0MNVWcEYMUUPvrdGt5zgOiQ6ZV9bms481QShizJVeBNGSjyHA0ve8SMOF
Unbw58G0WlWOOgE7lpy/rrykK3SOZL/3h/huxfCtzZRCjEq4ym0rcQ14WwIDAQAB
-----END PUBLIC KEY-----

我认为 phpseclib 在这里真正做的是 base64_encode'ing 打包的 $cert 并为其添加页眉和页脚。你想要什么格式的密钥?你想要base-10格式的指数和模数还是以上就足够了?

于 2012-11-28T17:23:47.390 回答