2016-10-28 3 views
0

У меня есть большой файл, который я пытаюсь зашифровать с помощью RSA. Да, я знаю, что гибридное шифрование обычно используется в этом случае, но я хотел бы использовать стандартное шифрование с открытым ключом, чтобы увидеть разницу в эффективности.Зашифровать файл блоками

Чтобы зашифровать такой большой файл, я понимаю, что я должен шифровать блок за блоком. После получения ошибки, которая заявила, что мой байтовый массив слишком велик для шифрования с помощью RSA-2048, я уменьшил массив байтов до 245 байтов. Байт-массив из 246 байт отлично работает, но он также работает только для 246 байтов, что является моей проблемой. Мне нужно зашифровать весь файл с помощью RSA-2048.

После изучения криптографии RSA-2048 для лучшего понимания и блочного шифрования я все еще запутался в реализации блочного шифрования с помощью RSA-2048. Это мой первый опыт внедрения криптографии на любом языке. Ниже приведен мой код, относящийся к шифрованию большого файла с открытым ключом RSA.

Любые предложения относительно того, как я могу зашифровать весь большой блок файлов блоком с помощью RSA, оцениваются.

+0

Нет, «Я знаю, что гибридное шифрование обычно используется в этом случае», но никогда не должно быть узнаваемым разработчиком. Симметричное и асимметричное шифрование имеют свое место в зависимости от их характеристик, используют их таким образом, чтобы не использовать 1000 мини-автомобилей для доставки бетона для небоскреба. Там возникает вопрос, почему вы используете асимметричное шифрование (RSA), вам нужна пара открытого и закрытого ключей? Наконец, я надеюсь, что это никогда не будет использоваться в производственном коде. – zaph

ответ

1

Прежде всего, независимо от того, что вы могли бы сказать, вы никогда не должны использовать RSA в качестве блочного шифрования. Если вы сделали это в производственном коде, и кто-то узнал, скорее всего, вас уволят.

Но ...

  • Вы должны прочитать ДО ~ 246 байт из FileInputStream.
  • Зашифровать результат этого с помощью RSA.
  • Запишите зашифрованный блок в FileOutputStream.

Ваш код не делает этого, потому что:

  • Вы возвращаетесь первый блок шифротекста сразу:

    inputfile= cipher.doFinal(block); return inputfile;

  • Ты ничего с результатом не делать.
+0

См. Мое обновление. Я путаюсь, что я вернусь. –

+0

@SamHunt Я думаю, вам следует начинать с нуля и, возможно, узнать о циклах, сначала вводе-выводе файлов. Ваш код не имеет смысла. Вы не должны возвращаться туда, потому что код только петли один раз? –

+0

Я читал о циклах while и вводах файлов. Я так учусь, пожалуйста, сэр, не могли бы вы объяснить, куда я вернусь. Я извиняюсь за свое замешательство, но я потратил много часов на это. Спасибо. –

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

  • Нет связанных вопросов^_^