我想将使用Crypt_RSA
(phpseclib)生成的公钥传递给Java。
这样做的一种方法是将PEM公钥传递给Java。下一步是从Java中的PEM文件中获取公钥。一种方法是删除-----BEGIN RSA KEY-----
和-----END RSA KEY-----
,但是有更清洁的方法吗?
的更新
这实际上不起作用!我知道在Android或Java中构造RSAPublicKeySpec的唯一方法是通过模数和指数。当然,我可以尝试解析相同的PEM公钥来获取它们,但我不认为这是一种直接/聪明的做事方式。
我正在考虑获取公钥的模数和指数,然后将它们传递给Java。然后,Java将从模数和指数重构公钥。但是,如何使用Crypt_RSA
?
答案 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应用程序