Установить модуль и экспоненту из VB.Net для Android/Java

У меня есть это RSA public key который генерируется в VB.Net мой сервер.

<RSAKeyValue><Modulus>tv0tzng4pW7erDo2ke/Ku9TGKRukAzx+lihZVblIOE6GWIoiwlILOANeVliZLi1s5qMsXEUA4GV2woC1zFdhJvfFja8Nacl4I3CJ4JYmGqcSZinWKgo3MJdoEqFl9NliF4wTYLow3GYoUh03WxoeArozV1S03drP898b9PdbjPY+ji4jpZHJWnbfg+qWSziF1Q/pSAxpzabeoamz1+ekqlhuxZavQUl+hIhx/quHqy3ybFWcX6yE5NKeY1fzX3L7</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>

Я хочу установить это значение на мой открытый ключ android RSA, но преобразование с этим кодом не устанавливает ключ правильно.

RSAPublicKeySpec spec = new RSAPublicKeySpec(new BigInteger("tv0tzng4pW7erDo2ke/Ku9TGKRukAzx+lihZVblIOE6GWIoiwlILOANeVliZLi1s5qMsXEUA4GV2woC1zFdhJvfFja8Nacl4I3CJ4JYmGqcSZinWKgo3MJdoEqFl9NliF4wTYLow3GYoUh03WxoeArozV1S03drP898b9PdbjPY+ji4jpZHJWnbfg+qWSziF1Q/pSAxpzabeoamz1+ekqlhuxZavQUl+hIhx/quHqy3ybFWcX6yE5NKeY1fzX3L7".getBytes())
,new BigInteger("AQAB".getBytes()));

РЕДАКТИРОВАТЬ: я пробовал этот код тоже без удачи. Предложение @Artjom

1 ответ

Во-первых, вы должны декодировать модуль и показатель степени от Base64.

Во-вторых, вы должны использовать другой конструктор для BigInteger:

BigInteger(int signum, byte[] magnitude)

с signum как единое целое, потому что оба значения не находятся в двухзначной записи и всегда положительны.

Другие вопросы по тегам