Implementazione e motore di crittografia AES per PBE in Android, e ho trovato due modi per implementare la creazione di IV e vorrei sapere quale è migliore e più sicuro per ottenere IvParameterSpec
:Generazione di IV casuali per AES in Java
Metodo # 1:
SecureRandom randomSecureRandom = SecureRandom.getInstance("SHA1PRNG");
byte[] iv = new byte[cipher.getBlockSize()];
randomSecureRandom.nextBytes(iv);
IvParameterSpec ivParams = new IvParameterSpec(iv);
Metodo # 2:
AlgorithmParameters params = cipher.getParameters();
byte[] iv2 = params.getParameterSpec(IvParameterSpec.class).getIV();
ivParams = new IvParameterSpec(iv2);
mi metterà alla prova esso, domani , al momento non sono in grado di farlo. Grazie – user1576396
ho modificato il codice in questo modo: SecureRandom random = SecureRandom.getInstance (PRNG_ALGO); random = new SecureRandom(); Log.d ("generateSalt", "Algorithm scelto da SO:" + random.getAlgorithm()); Il registro mostra questo: D/generateSalt: Algorithm scelto da SO: SHA1PRNG SO l'algo scelto è SHA1PRNG – user1576396
Questo è ottimo, ma SHA1PRNG è mal definito e potrebbe differire tra le implementazioni. Anche se disponibile, potrebbe non essere la migliore opzione disponibile in termini di sicurezza ed efficienza. Come indicato, userei invece il costruttore no-arguments per 'SecureRandom'. –