estoy tratando de generar números aleatorios criptográficamente seguros usando Java y el uso de la sección de código siguiente para crear un objeto SecureRandom para ver su proveedor y el algoritmo:¿BouncyCastle tiene un servicio SecureRandom?
Provider prov=new org.spongycastle.jce.provider.BouncyCastleProvider();
Security.insertProviderAt(prov, 1);
SecureRandom sr=new SecureRandom();
srProvider=sr.getProvider().toString();
srAlgorithm=sr.getAlgorithm();
(castillo esponjosa es equivalente castillo hinchable para android hecha por Roberto Tyley - https://github.com/rtyley)
Cuando veo imágenes proveedor y el algoritmo, se muestra: versión 1.0 Crypto SHA1PRNG
lo que me sorprende es que el proveedor no está Spongycastle incluso si está instalado como el primer proveedor en el código . Me gustaría preguntarle a) ¿No se implementó SecureRandom en Spongy Castle (o Bouncy Castle)? b) Por la "versión 1.0 Crypto" es exactamente (quiero decir es que el proveedor Sun JCE o qué?)
Gracias ...
Rubí
Gracias Nikolay. Solo quería saber si SHA1PRNG tiene una alternativa o no. Sería bueno comprobar SHA1PRNG y otros en las herramientas de verificación de aleatoriedad. –
Al menos en ICS (stock Galaxy Nexus) que es la única implementación de 'SecureRandom'. SHA1PRNG es un PRNG, por lo que solo es tan bueno como la semilla que le das. Y está sembrado de '/ dev/urandom', por lo que podría no ser tan bueno. De nuevo, esto es para ICS, pero dudo que sea diferente en otras versiones. '/ dev/random' puede ser muy lento en Android, así que supongo que es por eso que no se usa. Hazlo aquí si realmente consultas con una herramienta. –
@ Nikolay Elenkov: Gracias por la información.¿Cómo puedo ver si dev/random o dev/urandom se usa en mi dispositivo Android como fuente de partida y cómo puedo cambiarlo dinámicamente en mi código? –