2013-10-03 32 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']; 
相關問題