2012-06-14 5 views
6

ich aus einer Datei zu lesen versuchen und verschlüsseln die Daten mit AES im CFB-Modus ohne PolsterungAES-Verschlüsselung abschneidet Text in CFB-Modus

'AES/CFB/NoPadding'. Die IV ist 16 Bytes lang.

Vorausgesetzt, dass AES standardmäßig mit 16-Byte-Blöcken arbeitet, hätte ich gedacht, ein Padding-Schema zu verwenden, wenn ich CBC oder einen anderen Modus als CFB verwenden würde. CFB erfordert im Wesentlichen keine Auffüllung für Klartext.

Also das Problem ist, dass, wenn meine Datei Daten enthält, die weniger als 16 Bytes ist, dann nichts verschlüsselt wird. Wenn es größer als 16 Bytes ist, werden nur die ersten 16 Bytes verschlüsselt.

Dies zeigt deutlich, dass die Blockgröße tritt und wenn es einen Unterlauf oder Überlauf von Bytes w.r.t. die Blockgröße, dann werden diese Daten/Bytes verworfen.

Was ich nicht verstehe, ist während der Verwendung von CFB, muss ich nicht die Daten auffüllen .. richtig! Warum kommt dann die 16 Byte große Standardblockgröße von AES zum Einsatz und schneidet Daten ab?

+1

Veröffentlichen Sie den Code, den Sie für die Verschlüsselung verwenden. – Robert

Antwort

4

Sie haben es versäumt, die Anzahl der Bits anzugeben, die Sie für diesen Modus senden möchten. Daher erhalten Sie die standardmäßigen 128 Bit. Es klingt wie Sie wollen 8 Bits, für die Sie das folgende Argument zu GetInstance() verwenden sollten:

Verwandte Themen