Как уже говорилось, на ваш вопрос есть один ответ, и это "нет". RSA-шифрование - это алгоритм, который шифрует сообщения до заданного размера, который зависит от размера ключа; с 1024-битным ключом RSA и RSA как стандарт описывает это , максимальный размер составляет 117 байт, не более. Невозможно зашифровать сообщение большего размера только с помощью RSA, и это определенная математическая уверенность.
Если вам действительно нужно обрабатывать более длинные сообщения, то обязательно необходимо добавить что-то еще. В этом случае, пожалуйста, , пожалуйста, , не пытайтесь делать что-то свое, придуманное, с каким-то очень умным разбиением данных на маленькие блоки и тому подобное. Этот путь ведет к гибели. Вы можете создать что-то, что выглядит как для компиляции и запуска, но что-то неизменно будет слабым, как почти любая другая самодельная вариация в криптографии. Это потому, что безопасность не может быть проверена: это не случай «работает» или «не работает».
Проложенный путь асимметричного шифрования идет так:
- Вы выбираете случайную последовательность байтов некоторой подходящей длины, например, 128 бит (это 16 байтов). Давайте назовем это K .
- Вы шифруете K открытым ключом RSA; это дает E .
- Вы шифруете сообщение с помощью K , используя алгоритм симметричного шифрования (
"AES/CBC/PKCS5Padding"
). Так как это однократный ключ, вы можете использовать все нули IV. Это дает кучу байтов, давайте назовем это F .
- Зашифрованное сообщение является тогда объединением E и F .
Расшифровка происходит в обратном порядке: закрытый ключ RSA используется для восстановления K из E , затем K используется для расшифровки F в исходное сообщение. Ключ K никогда нигде не сохраняется, и каждый раз генерируется новый ключ K (даже если вы шифруете одно и то же сообщение дважды). Это важно, не меняйте это, пока не поймете, что делаете (а если и поймете, то уже знаете).
Учитывая то, что вы заявляете о своей проблеме, у вас есть , чтобы сделать что-то еще, кроме "просто RSA". Процедура, которую я описал выше, касается лучшего "чего-то еще", которое вы могли бы придумать, с точки зрения безопасности.
Сборка некоторых криптографических элементов в такой протокол является процессом, чреватым подводными камнями, поэтому вам может повезти с использованием уже определенного формата и библиотеки поддержки. Два распространенных формата для асимметричного шифрования: CMS и OpenPGP . Библиотека, которая поддерживает оба и имеет хорошую репутацию: Bouncy Castle .