Расшифровать SIMPLEBLOB CryptoAPI в Java

Вот мой процесс:

КриптоAPI:

  1. Сгенерировать сеансовый ключ AES
  2. Используйте открытый ключ получателя для шифрования и экспорта (1) в SIMPLEBLOB с RSA
  3. Отправить SIMPLEBLOB получателю

Джава:

  1. Получатель получает (3)
  2. Получатель хочет расшифровать SIMPLEBLOB, используя свой закрытый ключ

Это довольно стандартно, я считаю. Необходимо побайтно перевернуть полученный массив байтов (из шага 4 выше). Однако по какой-то причине количество полученных байтов превышает максимально допустимое количество байтов, которое может расшифровать алгоритм RSA. Ошибка: «javax.crypto.IllegalBlockSizeException: данные не должны быть длиннее 256 байт». Значит, происходит что-то еще, чего я не понимаю. Может кто-нибудь объяснить, как правильно расшифровать SIMPLEBLOB в Java? Ресурсы помогут.


person KyleM    schedule 01.08.2013    source источник
comment
Вы видели msdn.microsoft.com/en-us /библиотека/окна/рабочий стол/ ? Данные, созданные CryptExportKey, содержат определенный заголовок в дополнение к фактическому зашифрованному тексту.   -  person Igor Tandetnik    schedule 02.08.2013
comment
@IgorTandetnik Спасибо, я не знаю, как я это пропустил. Поэтому я бы просто удалил зашифрованный ключ BYTE[rsapubkey.bitlen/8]; часть из SIMPLEBLOB, переверните байты, затем расшифруйте его с помощью RSA в Java.   -  person KyleM    schedule 02.08.2013
comment
Как вы распространяете открытые ключи? Есть ли причина, по которой TLS нельзя использовать здесь?   -  person ntoskrnl    schedule 02.08.2013
comment
@ntoskrnl Достаточно сказать, что я успешно импортировал открытый ключ с помощью CryptoAPI.   -  person KyleM    schedule 02.08.2013


Ответы (1)


Взгляните на эту страницу: структура SIMPLEBLOB Первые 12 байтов blob принадлежит BLOBHEADER. Чтобы расшифровать ключ, начните с 12-й позиции зашифрованного большого двоичного объекта.

person andret8    schedule 25.09.2013
comment
Да, мы решили это, см. комментарии к моему вопросу выше. Спасибо за ответ. - person KyleM; 25.09.2013