RSA может использоваться только для шифрования сообщений, длина которых меньше модуля. Насколько меньше зависит от заполнения, например, 11 байт в случае PKCS # 1 v1.5, s. здесь . В случае OAEP количество байтов, требуемых заполнением, зависит от используемого дайджеста s. здесь . Подробности описаны в RFC8017, RSAES-PKCS1-v1_5 и RSAES-OAEP .
Для полноты: RSA без заполнения (учебник RSA) позволяет шифровать сообщения точно до длины модуля. Однако на практике заполнение всегда должно использоваться по соображениям безопасности, поэтому учебник RSA не является реальным вариантом.
Опубликованный код использует ключ RSA из 1024 бит и заполнение PKCS # 1 v1.5. Таким образом, максимальный размер сообщения, подлежащего шифрованию, составляет 117 байт. Сообщения большего размера вызывают исключение CryptographicException (недопустимая длина) . Это причина вашей проблемы.
8192-битный (1024 байт) ключ теоретически позволяет зашифровать сообщения длиной до 1013 байт с помощью PKCS # 1 v1.5 Padding. Однако производительность сильно снижается с увеличением размера ключа s. здесь .
Симметрия c шифрование более производительно, чем асимметрия c шифрование . Таким образом, на практике большие объемы данных шифруются с использованием симметричного c шифрования, например AES. Однако у шифрования symri c есть проблема, заключающаяся в том, что партнеры по обмену данными должны обмениваться ключом symri c. Для этой цели обычно используется асимметричное c шифрование, например RSA ( гибридное шифрование ), поскольку для шифрования необходимы только ключи publi c (которые, следовательно, могут передаваться по незащищенному каналу). Однако для предотвращения обманной замены ключей publi c ( man при атаке middel ) обычно требуется сложная инфраструктура publi c ключей .