it-swarm.com.de

AES / CBC / PKCS5Padding vs. AES / CBC / PKCS7Padding mit 256 Schlüsselgrößen java

Ich benutze gerade AES/CBC/PKCS5Padding zum Verschlüsseln von Dateien in Java mit 256 Bytes Schlüsselgröße, aber während der Suche fand ich auf stackexchange PKCS # 5-PKCS # 7-Polsterung und es wird erwähnt,

PKCS # 5-Auffüllung ist eine Teilmenge der PKCS # 7-Auffüllung für 8-Byte-Blockgrößen

Also will ich es wissen

  1. Wird die Leistung von AES/CBC/PKCS7Padding wird besser sein als AES/CBC/PKCS5Padding für die obige Konfiguration?
  2. Wie können wir die Blockgröße in Java wie erwähnt Konfigurieren?

    PKCS # 7-Auffüllung würde für jede Blockgröße von 1 bis 255 Bytes funktionieren.

Mein Beispielcode ist,

SecureRandom rnd = new SecureRandom();
IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16));

KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256);
SecretKey k = generator.generateKey();

Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, k, iv);
21
dbw

Die Blockgröße ist eine Eigenschaft des verwendeten Verschlüsselungsalgorithmus. Für AES sind es immer 16 Bytes.

Genau genommen kann PKCS5Padding nicht mit AES verwendet werden, da es nur für eine Blockgröße von 8 Bytes definiert ist. Ich gehe davon aus, dass AES/CBC/PKCS5Padding intern als AES/CBC/PKCS7Padding interpretiert wird.

Der einzige Unterschied zwischen diesen Auffüllschemata besteht darin, dass PKCS7Padding die Blockgröße als Parameter hat, während sie für PKCS5Padding auf 8 Byte festgelegt ist. Wenn die Blockgröße 8 Bytes beträgt, tun sie genau das Gleiche.

33
Henry