- Chiffre.doFinal Ausgabe Größe

Ich mache AES-CBC-Entschlüsselung in java (javax.crypto . Ich verwende die folgenden Cipher-Klasse Methoden:

  • public final void init (int opmode, Key key, AlgorithmParameters params) Methode für die Initialisierung,
  • final int update(byte[] input, int inputOffset, int inputLen, byte[] output) Methode für die Entschlüsselung der Daten,
  • und schließlich nenne ich die final int doFinal(byte[] output, int outputOffset) Methode zum beenden der Entschlüsselung.

Meine Anfrage ist: Kann ich davon ausgehen, dass die Größe der zurückgegebenen Daten zu mir durch die doFinal nennen würde, immer weniger als oder gleich der AES-Block-Größe? Die Dokumentation beschreibt die doFinal-Methode als:

“Beendet eine multi-Teil-transformation
(die ver-oder Entschlüsselung). Prozesse
alle bytes, die gepuffert
im vorherigen update Aufrufe. Die Letzte
verwandelt bytes gespeichert sind, in die
output-buffer."

Aber nirgends sagt, dass die Ausgabe-Puffer enthalten würde höchstens einen block von Daten. Obwohl ich verstehe, dass dies ist das Allgemeine Verhalten von AES-APIs, und dies ist das Verhalten, meinen code ausgestellt hat, bis jetzt, aber würde diese Annahme halten?

  • Nur um klar sein, ich brauche Sie zum aufrufen der update-Funktion, die mehrere Male wie ich immer bin, der die verschlüsselten Daten in Blöcken. Ich habe nicht die ganzen verschlüsselten Daten mit mir so ich kann nicht einen einzigen Anruf zu doFinal die Ausgabe in einem Schritt.
InformationsquelleAutor vikas | 2010-08-13
Schreibe einen Kommentar