SecureRandom Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro.
[Android.Runtime.Register("java/security/SecureRandom", DoNotGenerateAcw=true)]
public class SecureRandom : Java.Util.Random
[<Android.Runtime.Register("java/security/SecureRandom", DoNotGenerateAcw=true)>]
type SecureRandom = class
inherit Random
- Herencia
- Atributos
Comentarios
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro.
Un número aleatorio criptográficomente seguro cumple mínimamente las pruebas de generador de números aleatorios estadísticos especificadas en FIPS 140-2, Requisitos de seguridad para módulos criptográficoshttp://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf, sección 4.9.1. Además, SecureRandom debe generar una salida no determinista. Por lo tanto, cualquier material de inicialización pasado a un SecureRandom objeto debe ser impredecible y todas las SecureRandom secuencias de salida deben ser criptográficamente seguras, como se describe en RFC 4086: Requisitos de aleatoriedad para la seguridadhttp://tools.ietf.org/html/rfc4086.
Muchas SecureRandom implementaciones están en forma de generador de números pseudoaleatorios (PRNG, también conocido como generador de bits aleatorios deterministas o DRBG), lo que significa que usan un algoritmo determinista para producir una secuencia pseudoaleatoria a partir de una inicialización aleatoria. Otras implementaciones pueden producir números aleatorios verdaderos y otros pueden usar una combinación de ambas técnicas.
Un autor de llamada obtiene una SecureRandom instancia a través del constructor no-argument o uno de los getInstance métodos. Por ejemplo:
<blockquote>
SecureRandom r1 = new SecureRandom();
SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
SecureRandom r3 = SecureRandom.getInstance("DRBG",
DrbgParameters.instantiation(128, RESEED_ONLY, null));
</blockquote>
La tercera instrucción anterior devuelve un SecureRandom objeto del algoritmo específico que admite los parámetros de instancias específicos. Los parámetros efectivos de creación de instancias de la implementación deben coincidir con esta solicitud mínima, pero no necesariamente lo mismo. Por ejemplo, incluso si la solicitud no requiere una determinada característica, la creación de instancias real puede proporcionar la característica. Una implementación puede crear instancias diferir de un SecureRandom hasta que se use realmente, pero los parámetros de instancia efectivos deben determinarse justo después de crearse y #getParameters() siempre deben devolver el mismo resultado sin cambios.
Los autores de llamadas típicos de SecureRandom invocan los métodos siguientes para recuperar bytes aleatorios:
<blockquote>
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
</blockquote>
Los autores de llamadas también pueden invocar el #generateSeed método para generar un número determinado de bytes de inicialización (para inicializar otros generadores de números aleatorios, por ejemplo):
<blockquote>
byte[] seed = random.generateSeed(20);
</blockquote>
Un objeto PRNG SecureRandom recién creado no se inicializará (excepto si lo crea #SecureRandom(byte[])). La primera llamada a nextBytes le obligará a inicializarse desde un origen de entropía específico de la implementación. Esta propagación automática no se producirá si setSeed se llamó anteriormente.
Se SecureRandom puede volver a usar en cualquier momento llamando al reseed método o setSeed . El reseed método lee la entrada de entropía de su origen de entropía para volver a crearse. El setSeed método requiere que el autor de la llamada proporcione la inicialización.
Tenga en cuenta que es posible que reseed no sea compatible con todas las SecureRandom implementaciones.
Algunas SecureRandom implementaciones pueden aceptar un SecureRandomParameters parámetro en sus #nextBytes(byte[], SecureRandomParameters) métodos y #reseed(SecureRandomParameters) para controlar aún más el comportamiento de los métodos.
Nota: Según la implementación, los generateSeedmétodos , reseed y nextBytes pueden bloquearse como entropía se recopilan, por ejemplo, si el origen de entropía es /dev/random en varios sistemas operativos similares a Unix.
<Los objetos h2> seguridad <de subprocesos /h2>SecureRandom son seguros para su uso por varios subprocesos simultáneos.
Agregado en la versión 1.1.
Java documentación para java.security.SecureRandom.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Constructores
| Nombre | Description |
|---|---|
| SecureRandom() |
Construye un generador de números aleatorios seguro (RNG) que implementa el algoritmo de número aleatorio predeterminado. |
| SecureRandom(Byte[]) |
Construye un generador de números aleatorios seguro (RNG) que implementa el algoritmo de número aleatorio predeterminado. |
| SecureRandom(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
| SecureRandom(SecureRandomSpi, Provider) |
Crea un objeto |
Propiedades
| Nombre | Description |
|---|---|
| Algorithm |
Devuelve el nombre del algoritmo implementado por este |
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| InstanceStrong |
Devuelve un objeto |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| JniPeerMembers |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. |
| Parameters |
Devuelve el valor efectivo |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| Provider |
Devuelve el proveedor de este |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
| Nombre | Description |
|---|---|
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| Equals(Object) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| GenerateSeed(Int32) |
Devuelve el número especificado de bytes de inicialización, calculado mediante el algoritmo de generación de inicialización que esta clase usa para inicializarse a sí mismo. |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| GetInstance(String, ISecureRandomParameters, Provider) |
Devuelve un |
| GetInstance(String, ISecureRandomParameters, String) |
Devuelve un |
| GetInstance(String, ISecureRandomParameters) |
Devuelve un |
| GetInstance(String, Provider) |
Devuelve un |
| GetInstance(String, String) |
Devuelve un |
| GetInstance(String) |
Devuelve un |
| GetSeed(Int32) |
Devuelve el número especificado de bytes de inicialización, calculado mediante el algoritmo de generación de inicialización que esta clase usa para inicializarse a sí mismo. |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Next(Int32) |
Genera un entero que contiene el número especificado por el usuario de bits pseudoaleatorios (justificado a la derecha, con ceros iniciales). |
| NextBoolean() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
| NextBytes(Byte[], ISecureRandomParameters) |
Genera un número especificado por el usuario de bytes aleatorios con parámetros adicionales. |
| NextBytes(Byte[]) |
Genera bytes aleatorios y los coloca en una matriz de bytes proporcionada por el usuario. (Heredado de Random) |
| NextDouble() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
| NextFloat() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
| NextGaussian() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
| NextInt() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
| NextInt(Int32) |
Devuelve un pseudoaleatorio, distribuido |
| NextLong() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| Reseed() |
Vuelve a inicializar esto |
| Reseed(ISecureRandomParameters) |
Vuelve a crear esto |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| SetSeed(Byte[]) |
Vuelve a inicializar este objeto aleatorio con la inicialización especificada. |
| SetSeed(Int64) |
Establece la inicialización de este generador de números aleatorios mediante una sola |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. (Heredado de Random) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Esta clase proporciona un generador de números aleatorios (RNG) criptográficomente seguro. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |