如何将公钥phpseclib传递给Java?

时间:2013-10-03 02:31:39

标签: java android rsa phpseclib

我想将使用Crypt_RSA(phpseclib)生成的公钥传递给Java。

这样做的一种方法是将PEM公钥传递给Java。下一步是从Java中的PEM文件中获取公钥。一种方法是删除-----BEGIN RSA KEY----------END RSA KEY-----,但是有更清洁的方法吗? 的更新
这实际上不起作用!我知道在Android或Java中构造RSAPublicKeySpec的唯一方法是通过模数和指数。当然,我可以尝试解析相同的PEM公钥来获取它们,但我不认为这是一种直接/聪明的做事方式。

我正在考虑获取公钥的模数和指数,然后将它们传递给Java。然后,Java将从模数和指数重构公钥。但是,如何使用Crypt_RSA

获得模数和指数

2 个答案:

答案 0 :(得分:0)

你可以这样做:

$publickey = $rsa->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW);
echo $publickey['e'];
echo "\r\n";
echo $publickey['n'];

答案 1 :(得分:0)

之后

$rsa = new Crypt_RSA();
$rsa->loadKey($privateKey);
$rsa->loadKey($rsa->getPublicKey());

我们可以通过以下方式获得模数和指数:

$pubMod = $rsa->modulus->toBytes();// this gives base 256 encoded string, toString() gives base 10 etc.
$pubExp = $rsa->exponent->toBytes();

toBytes()

中找到toString()Math_BigInteger等方法

现在我可以很容易地对模数和公共指数进行base64编码并将它们连接成1个字符串并发送到我的Java应用程序