0

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

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

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

4

2 回答 2

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 应用程序

于 2013-10-04T01:53:47.587 回答
0

你可以这样做:

$publickey = $rsa->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW);
echo $publickey['e'];
echo "\r\n";
echo $publickey['n'];
于 2013-10-03T15:39:02.850 回答