Ich implementiere und AES-Verschlüsselung für PBE in Android, und ich habe zwei Möglichkeiten gefunden, um die Schaffung der IV zu implementieren, und ich möchte wissen, welche besser und sicherer ist für das erhalten IvParameterSpec
:Generieren von zufälligen IV für AES in Java
Methode 1:
SecureRandom randomSecureRandom = SecureRandom.getInstance("SHA1PRNG");
byte[] iv = new byte[cipher.getBlockSize()];
randomSecureRandom.nextBytes(iv);
IvParameterSpec ivParams = new IvParameterSpec(iv);
Methode # 2:
AlgorithmParameters params = cipher.getParameters();
byte[] iv2 = params.getParameterSpec(IvParameterSpec.class).getIV();
ivParams = new IvParameterSpec(iv2);
ich es testen, morgen , momentan kann ich nicht. Danke – user1576396
Ich habe den Code wie folgt geändert: SecureRandom random = SecureRandom.getInstance (PRNG_ALGO); random = neu SecureRandom(); Log.d ("generateSalt", "Algorithmus ausgewählt von SO:" + random.getAlgorithm()); Das Protokoll zeigt dies: D/generateSalt: Algorithmus von SO gewählt: SHA1PRNG SO der Algo gewählt ist SHA1PRNG – user1576396
Das ist toll, aber SHA1PRNG ist schlecht definiert und kann sich über Implementierungen unterscheiden. Selbst wenn es verfügbar ist, ist es möglicherweise nicht die beste verfügbare Option für Sicherheit und Effizienz. Wie angegeben, würde ich stattdessen den Konstruktor "no-arguments" für "SecureRandom" verwenden. –