Я пытаюсь реализовать функцию modPow
на Java-карте, используя сборку в RSA CryptoSystem. Код кажется тривиальным, но я выпустил его на реализацию.Метод Java Card setExponent() сбой при экспоненте более 10 байт
Мой код нед Сейчас:
Cipher m_encryptCipherRSA = Cipher.getInstance(Cipher.ALG_RSA_NOPAD, false); // create the cipher
RSAPublicKey m_rsaPublicKey = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC,KeyBuilder.LENGTH_RSA_1024,false); // create the public key
m_random = RandomData.getInstance(RandomData.ALG_SECURE_RANDOM);
m_random.generateData(temp1, (short)0, MODULUS_LENGTH);
m_rsaPublicKey.setModulus(temp1,(short)0, MODULUS_LENGTH); //generate modulus
m_random.generateData(temp1,(short)0, (short) EXPONENT_LENGTH);
m_rsaPublicKey.setExponent(temp1,(short)0, (short)EXPONENT_LENGTH);
треск, кажется, работает нормально, если EXPONENT_LENGTH
имеет не более 10 bytes.The Ja Ca Я не ограничил размер государственного показателя. Однако мой проект основан на числах до 128
байтов long.Is существует способ создать общую функцию modpow
, основанную на этом аппаратном ограничении? Есть ли другой способ, которым я мог бы реализовать усиление мощности, которое по-прежнему возможно.
Что происходит, если вы используете 'EXPONENT_LENGTH> 10'? Какое слово статуса вы получаете? – vojta
@vojta 6f 00, который неизвестен. – Marga
Поймайте исключение броска и сообщите нам его тип (используйте оператор instanceof) и его причину (вывод метода getReason()), пожалуйста. – vojta