2013-10-03 33 views
0

我想通过生成使用Crypt_RSA(phpseclib)到Java的公钥。的做这件事的如何将公钥phpseclib传递给Java?

1的方式是通过PEM公共密钥到Java。下一步是从Java中的PEM文件获取公钥。 1种方式是去除-----BEGIN RSA KEY----------END RSA KEY-----但没有任何清洁的方式?
更新
事实上这并不会工作!我知道在Android或Java中构建RSAPublicKeySpec的唯一方法是通过模数和指数。当然,我可以尝试以一种解析相同PEM公共密钥来获得他们,但我不认为这是在这里做事的一个简单/智能方式。

我想获得公共密钥的系数和指数,然后将它们传递到Java。然后,Java将从模数和指数重构公钥。但是,如何使用Crypt_RSA获得模数和指数?

+0

当我不得不这样做,我只是剥离了页眉和页脚和解码基于64位编码。它工作得很好。 – WeaponsGrade

+1

Hi @WeaponsGrade,你在base64解码之后得到了什么,例如模数和指数以及其他一些值?生成的PEM公钥也由多条线组成,这些线需要Java端的连接 – ericn

回答

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

0

你可以这样做:

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