Ответ 1
Ваш вопрос несколько смущен, но я уверен, что вы хотите создать зашифрованные сообщения PGP с использованием RSA publickey, соответствующего закрытому ключу RSA на вашей смарт-карте, а затем использовать закрытый ключ RSA на смарт-карте для (помощи) их расшифровки, PGP (как и практически все остальное) использует гибридное шифрование, поэтому зашифрованное сообщение PGP в соответствующей части состоит из:
- фактическое сообщение, зашифрованное соответствующим симметричным алгоритмом, таким как TDES или AES, с использованием произвольно созданного рабочего ключа, назовите его K
- рабочий ключ K плюс некоторые метаданные, зашифрованные RSA, используя публикацию получателя и дополнение, определенное исходным стандартом PKCS # 1, теперь официально называемое RSAES-PKCS1-v1_5, но все еще широко упомянутое несколько неточно как PKCS1.
Вам не нужно выполнять шаги шифрования, потому что это может сделать любое программное обеспечение, реализующее стандарт, включая библиотеку GnuPG или BouncyCastle bcpg
. Если вы хотите сделать это самостоятельно, возможно, для тестовых данных с использованием фальшивого K и никакого реального сообщения вам нужно сделать модульное усиление заполнения и RSA; в Java, по крайней мере, Oracle или openjdk Java со стандартными провайдерами криптографии, вы можете просто использовать javax.crypto.Cipher
, полученный с помощью .getInstance("RSA/ECB/PKCS1Padding")
обычным способом.
"Шифрование PKCS1" (для RSA), как описано в нижней части страницы 52 и верхней части страницы 53 этого документа, которая идентична содержимому, но не соответствует формату текущая спецификация OpenPGP (и ранее), которая относится к и фактически идентична ближнему течению PKCS # 1 spec (и ранее), все из которых говорят:
- один байт 00
- один байт 02
- достаточно байт, отличных от нуля, чтобы сделать результат правильной длиной и быть безопасным
- один байт 00
- "открытый текст", который для шифрования PGP фактически является рабочим симметричным ключом K, отформатированным, как указано в спецификации PGP.
Обратите внимание на начало абзаца
В случае алгоритма AES
представляется для другого варианта, а не PGP AFAICS, описанного на предыдущей странице, как
По опции (объявленной в расширенных возможностях) карта поддерживает дешифровку простой текст с ключом AES, хранящимся в специальной DO (D5). Это полезно, если ни сертификат, ни публика ключ существует, и внешний мир имеет общий секрет с картой.
поэтому игнорируйте его.