2013-10-03 5 views
0

Я хотел бы передать открытый ключ, сгенерированный с помощью Crypt_RSA (phpseclib) на Java.Как передать открытый ключ phpseclib на Java?

1 способ сделать это, чтобы передать открытый ключ PEM на Java. Следующий шаг - получить открытый ключ из файла PEM в Java. 1 способ - удалить -----BEGIN RSA KEY----- и -----END RSA KEY-----, но есть ли более чистый способ?
Обновления
Это не сработает! Единственный способ, которым я знаю построить RSAPublicKeySpec в Android или Java, - это модуль и показатель. Конечно, я могу попытаться разобрать один и тот же открытый ключ PEM, чтобы получить их, но я не думаю, что это один простой/умный способ делать что-то здесь.

Я собираюсь получить модуль и показатель открытого ключа, а затем передать их на Java. Затем Java восстановит открытый ключ из модуля и экспонента. Однако, как получить модуль и показатель степени, используя Crypt_RSA?

+0

Когда я должен был сделать это, я просто раздел верхний и нижние колонтитулы и декодирован base64-кодирование. Он работал очень хорошо. – WeaponsGrade

+1

Привет @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']; 
Смежные вопросы