sto cercando di generare numeri casuali crittograficamente sicuro utilizzando Java e utilizzando il seguente sezione di codice per creare un oggetto SecureRandom per visualizzarne il fornitore e l'algoritmo:BouncyCastle ha un servizio SecureRandom?
Provider prov=new org.spongycastle.jce.provider.BouncyCastleProvider();
Security.insertProviderAt(prov, 1);
SecureRandom sr=new SecureRandom();
srProvider=sr.getProvider().toString();
srAlgorithm=sr.getAlgorithm();
(castello spugnoso è castello gonfiabile equivalente per Android realizzato da Roberto Tyley - https://github.com/rtyley)
Quando visualizzo fornitore e l'algoritmo, si vede: la versione Crypto 1.0 SHA1PRNG
quello che mi sorprende è che il provider non è Spongycastle anche se è installato come il primo fornitore nel codice . Vorrei chiederti a) Non è SecureRandom implementato in Spongy Castle (o Bouncy Castle). b) Quale "Crypto versione 1.0" è esattamente (voglio dire è che fornitore di Sun JCE o cosa?)
Grazie ...
Rubi
Grazie Nikolay. Volevo solo sapere se SHA1PRNG ha un'alternativa o meno. Sarebbe bene controllare SHA1PRNG e altri in strumenti di controllo della casualità. –
Almeno su ICS (azione Galaxy Nexus) che è l'unica implementazione 'SecureRandom'. SHA1PRNG è un PRNG quindi è buono solo come il seme che gli dai. Ed è inizializzato da '/ dev/urandom', quindi potrebbe non essere così eccezionale. Ancora una volta, questo è per ICS, ma dubito che sarebbe diverso sulle altre versioni. '/ dev/random' può essere dolorosamente lento su Android, quindi suppongo sia per questo che non viene usato. Collegalo qui se controlli effettivamente con uno strumento. –
@ Nikolay Elenkov: Grazie per le informazioni.Come posso vedere se dev/random o dev/urandom sono usati sul mio dispositivo Android come seed source e come posso cambiarlo in modo dinamico nel mio codice? –