2016-09-25 8 views
3

Я пытаюсь реализовать некоторое шифрование в своем приложении Java. шифрования должен работать следующим образом:Максимальная длина сообщения RSA с конкретным дополнением

  1. Генерация случайных п бит AES ключ
  2. Шифрование ключ AES с использованием RSA с открытым ключом
  3. Отправить зашифрованный ключ AES на сервере
  4. Шифрование данных с помощью ключа AES + отправить сервер

У меня возникли проблемы с решением, какой алгоритм заполнения использовать. Я читал OAEPWithSHA-1AndMGF1Padding - хороший выбор, но какова максимальная длина сообщения, которую я могу зашифровать с этим?

Мне нужно знать точные максимальные байты, которые мой ключ AES может быть зашифрован с помощью RSA с помощью OAEPWithSHA-1AndMGF1Padding.

Длина ключа RSA также имеет значение. Я, вероятно, поеду на 2048 бит.

TL; DR: Сколько байтов можно зашифровать с помощью ключа RSA 2048 бит с OAEPWithSHA-1AndMGF1Padding?

ответ

6

То, что вы описываете, называется Hybrid Encryption и является распространенным способом получения скорости криптосистем с симметричным ключом в сочетании с преимуществами двух ключей RSA.

Что касается особенностей:

2048 бит RSA ключа позволяет 256 байтов из которых УАМИАЭ обивка занимает 42 байта, в результате чего около 214 байт для зашифрованных данных. Ключ AES-256 имеет длину 256 бит (32 байта), поэтому для него достаточно места.

+1

AES также поддерживает размеры клавиш 128 и 192 бит. – zaph

+0

Итак, OAEP с SHA1 и MGF1 занимает 42 байта? Если бы я использовал OAEP с SHA256 и MGF1, не использует ли больше байтов? – kwantuM

+0

Есть ли какой-нибудь документ для проверки байтов, используемых этими алгоритмами? Или, может быть, формула? – kwantuM

Смежные вопросы