Я пытаюсь воссоздать открытый ключ на Java-карте и использовать его для шифрования некоторых данных.Java Card Crypto Exception Шифрование ключа RSA
Вот код, чтобы построить открытый ключ, который я использую:
rsaPublicId = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, KeyBuilder.LENGTH_RSA_2048, false);
rsaPublicId.setExponent(rsaExponent, (short) 0, (short) rsaExponent.length);
rsaPublicId.setModulus(rsaPublicModulus, (short) 12, (short) ((short) rsaPublicModulus.length - (short) 12));
cipherId.init(rsaPublicId, Cipher.MODE_ENCRYPT);
И когда я пытаюсь зашифровать данные я использую этот код:
cipherId.doFinal(serviceBytes, (short) 0, (short) 16, buffer, (short) 0);
Но это происходит javacard.security.cryptoException с сообщением детали из «NULL»
cipherId = Cipher.getInstance(Cipher.ALG_RSA_PKCS1, false);
модуль устанавливается с размером 308, я t создан с Java и отправлен на карту.
Оставьте свое исключение блоком try-catch и сообщите нам, что является результатом getReason(), вызываемого экземпляром исключения, пожалуйста. – vojta
В Исключении появляется код 5. Он говорит: « /*** Этот код причины используется, чтобы указать, что алгоритм подписи или шифрования не заполняет входящее сообщение, а входное сообщение не выравнивается по блоку. */ открытый статический окончательный короткий ILLEGAL_USE = 5; " –
Какое подробное сообщение? В Java Card Classic нет такого понятия, как подробное сообщение. Я имею в виду: строки даже не поддерживаются ... –