Получение остатка открытого ключа RSA с использованием Bouncy Castle

Я новичок в криптографии, и мне было интересно, есть ли какой-либо уже реализованный метод для получения остатка открытого ключа.

Я нашел следующее утверждение об общественном остатке:Issuer Public Key Modulusразделен на две части, одна часть, состоящая из N CA - 36 старших значащих байтов модуля (крайние левые цифры открытого ключа эмитента), и вторая часть, состоящая из оставшихся N I - (N CA - 36) наименее значимых байтов модуля (the Issuer Public Key Remainder )

в этой книге: http://mech.vub.ac.be/teaching/info/mechatronica/finished_projects_2007/Groep%201/Smartcard_files/EMV%20v4.1%20Book%202.pdf

и я использую org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters#getModulus

чтобы получить часть модуля.

Могу ли я получить остаток открытого ключа, используя Bouncy Castle, или я должен вычислить его вручную на основе вышеуказанной спецификации?

1 ответ

Решение

Нет, BouncyCastle не предлагает API для получения остатка открытого ключа, потому что BouncyCastle предлагает общую реализацию RSA и, наоборот, остаток открытого ключа не часто используется: он в основном используется только интегральными микросхемами и связанным программным обеспечением,

Итак, если вам нужно получить остаток, вы должны вычислить его самостоятельно. Вы не должны беспокоиться об остатке, если вы не имеете дело с интегральными платами.

Теперь, вот способ вычислить остаток (мы предполагаем, что Ni и Nca определены):

BigInteger modulus = ...;
int nbytes = Ni − (Nca − 36);
BigInteger remainder = modulus.divideAndRemainder(BigInteger.valueOf(2).pow(8*nbytes))[1];
Другие вопросы по тегам