Разница между методами update () и dofinal () в шифре - PullRequest
0 голосов
/ 05 января 2019

Я прочитал одну статью о разнице между методами update () и dofinal () в шифре. Речь шла о том, что произойдет, если мы захотим зашифровать массив из 4 байтов, когда размер блока шифра составляет, например, 8 байтов. Если мы вызовем здесь обновление, он вернет ноль. Мой вопрос: что произойдет, если мы вызовем doFinal () с 4-байтовым массивом для шифрования и размером буфера 8 байт, сколько байт-закодированных данных мы получим при возврате?

1 Ответ

0 голосов
/ 06 января 2019
  • update(): подача данных, снова и снова, позволяет шифровать длинные файлы, потоки.

  • dofinal(): применить запрошенную схему заполнения к данным, если требуется и необходимо, а затем зашифровать. Режимы ECB и CBC требуют заполнения, а режим CTR - нет. Если в NOPADDING использовались некоторые библиотеки, возможно, секретно дополнит , в других вам придется самостоятельно обрабатывать заполнение.

При вызове dofinal() с 4-байтовыми данными, если NOPADDING не установлен, он будет дополнен и затем зашифрован.

Из Java Doc;

  • update(byte[] input) Продолжает операцию шифрования или дешифрования, состоящую из нескольких частей (в зависимости от того, как этот шифр был инициализирован), обрабатывая другую часть данных.
  • doFinal() Завершение операции шифрования или дешифрования, состоящей из нескольких частей, в зависимости от того, как был инициализирован этот шифр.
...