Ich bin verwirrt, warum ich einen Algorithmus wie „AES“ angeben müssen, wenn einen Schlüssel für die Verschlüsselung zu erzeugen, zB ..Was genau bedeutet die Angabe von "AES" als Algorithmus in KeyGenerator.getInstance()?
KeyGenerator kg = KeyGenerator.getInstance("AES");
Es eindeutig nicht zur Festlegung der Größe der verwendet wird, Schlüssel, da AES-Schlüssel 128, 192 oder 256 Bits sein können. Der Teil über init erfolgen würde() ...
kg.init(256, new SecureRandom());
SecretKey key = kg.generateKey();
Für das, was es wert ist, das obige Codebeispiel wurde entlehnt http://android-developers.blogspot.de/2013/02/using-cryptography-to-store-credentials.html
Außerdem NIST FIPS-197 Staaten ...
Es wurden keine schwachen oder halbschwachen Schlüssel für den AES-Algorithmus identifiziert und es gibt keine Einschränkung bei der Schlüsselauswahl.
... das würde dazu führen, mich so zu glauben, dass jeden 128, 192 oder 256 Bit als Schlüssel verwendet werden könnten.
eindeutig Angabe „AES“, wenn ich eine Chiffre-Instanz zu erhalten, z ...
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
... ist notwendig, den Verschlüsselungsalgorithmus, um anzuzeigen, Gebrauch zu sein. Ich verstehe einfach nicht, was der Zweck ist, es für die Schlüsselgenerierung zu spezifizieren.
Danke.
Einige Algorithmen erfordern möglicherweise Schlüssel mit speziellen Eigenschaften, wie zum Beispiel DES. Die Methode getInstance() verwendet also einen Algorithmusparameter. –
DES benötigt einen 56-Bit-Schlüssel, der in 64 Bits mit 8 Bits Padding (eigentlich Paritätsbits) gespeichert ist. Andere Chiffren haben bekannte "schwache Schlüssel", die vermieden werden müssen; vielleicht ist bekannt, dass alle Bits-Null oder bestimmte andere Bitmuster unsicher sind. –