SecureRandom Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit.
[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
- Vererbung
- Attribute
Hinweise
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit.
Eine kryptografisch starke Zufallszahl entspricht minimal den statistischen Zufallszahlengeneratortests gemäß FIPS 140-2, Sicherheitsanforderungen für kryptografische Modulehttp://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf, Abschnitt 4.9.1. Darüber hinaus SecureRandom muss eine nicht deterministische Ausgabe erzeugt werden. Daher muss jedes an ein SecureRandom Objekt übergebene Ausgangsmaterial unvorhersehbar sein, und alle SecureRandom Ausgabesequenzen müssen kryptografisch stark sein, wie in RFC 4086: Randomness Requirements for Securityhttp://tools.ietf.org/html/rfc4086 beschrieben.
Viele SecureRandom Implementierungen befinden sich in Form eines Pseudo-Zufallszahlengenerators (PRNG, auch als deterministischer Zufallsbit-Generator oder DRBG bezeichnet), was bedeutet, dass sie einen deterministischen Algorithmus verwenden, um eine pseudo-zufällige Sequenz aus einem zufälligen Ausgangswert zu erzeugen. Andere Implementierungen können echte Zufallszahlen erzeugen, und andere verwenden möglicherweise eine Kombination aus beiden Techniken.
Ein Aufrufer ruft eine SecureRandom Instanz über den No-Argument-Konstruktor oder eine der getInstance Methoden ab. Beispiel:
<Blockquote>
SecureRandom r1 = new SecureRandom();
SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
SecureRandom r3 = SecureRandom.getInstance("DRBG",
DrbgParameters.instantiation(128, RESEED_ONLY, null));
</blockquote>
Die dritte Anweisung oben gibt ein SecureRandom Objekt des spezifischen Algorithmus zurück, der die spezifischen Instanziierungsparameter unterstützt. Die effektiv instanziierten Parameter der Implementierung müssen dieser Mindestanforderung entsprechen, sind jedoch nicht unbedingt identisch. Selbst wenn für die Anforderung kein bestimmtes Feature erforderlich ist, kann die tatsächliche Instanziierung das Feature bereitstellen. Eine Implementierung kann eine Instanziierung lazily instanziieren, SecureRandom bis sie tatsächlich verwendet wird, aber die effektiven Instanziierungsparameter müssen direkt nach der Erstellung bestimmt werden und #getParameters() dasselbe Ergebnis immer unverändert zurückgeben.
Typische Aufrufer von SecureRandom Aufrufen der folgenden Methoden zum Abrufen zufälliger Bytes:
<Blockquote>
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
</blockquote>
Aufrufer können auch die #generateSeed Methode aufrufen, um eine bestimmte Anzahl von Seedbytes zu generieren (z. B. um andere Zufallszahlengeneratoren zu seeden):
<Blockquote>
byte[] seed = random.generateSeed(20);
</blockquote>
Ein neu erstelltes PRNG-Objekt SecureRandom ist nicht seeded (außer wenn es erstellt wird).#SecureRandom(byte[]) Der erste Aufruf nextBytes wird erzwingen, sich aus einer implementierungsspezifischen Entropiequelle zu besamen. Diese Selbstsaatierung tritt nicht auf, wenn setSeed sie zuvor aufgerufen wurde.
Eine SecureRandom kann jederzeit erneut eingelöst werden, indem die reseed Methode aufgerufen wird setSeed . Die reseed Methode liest die Entropieeingabe aus der Entropiequelle, um sich erneut zu besen. Für die setSeed Methode muss der Aufrufer den Seed bereitstellen.
Bitte beachten Sie, dass reseed möglicherweise nicht von allen SecureRandom Implementierungen unterstützt wird.
Einige SecureRandom Implementierungen akzeptieren möglicherweise einen SecureRandomParameters Parameter in seinen #nextBytes(byte[], SecureRandomParameters) und #reseed(SecureRandomParameters) Methoden, um das Verhalten der Methoden weiter zu steuern.
Hinweis: Je nach Implementierung können die generateSeedMethoden reseednextBytes blockieren, als Entropie gesammelt wird, z. B. wenn die Entropiequelle /dev/random auf verschiedenen Unix-ähnlichen Betriebssystemen ist.
<h2> Threadsicherheit </h2-Objekte>SecureRandom sind sicher für die Verwendung durch mehrere gleichzeitige Threads.
In 1.1 hinzugefügt.
Java Dokumentation für java.security.SecureRandom.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| SecureRandom() |
Erstellt einen sicheren Zufallszahlengenerator (RNG), der den standardmäßigen Zufallszahlenalgorithmus implementiert. |
| SecureRandom(Byte[]) |
Erstellt einen sicheren Zufallszahlengenerator (RNG), der den standardmäßigen Zufallszahlenalgorithmus implementiert. |
| SecureRandom(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
| SecureRandom(SecureRandomSpi, Provider) |
Erstellt ein |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Algorithm |
Gibt den Namen des von diesem Objekt implementierten |
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| InstanceStrong |
Gibt ein |
| JniIdentityHashCode |
Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist. (Geerbt von Object) |
| JniManagedPeerState |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| JniPeerMembers |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. |
| Parameters |
Gibt die Effektive |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (Geerbt von Object) |
| Provider |
Gibt den Anbieter dieses |
| ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
| ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Methoden
| Name | Beschreibung |
|---|---|
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| Dispose() |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| Dispose(Boolean) |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| DisposeUnlessReferenced() |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| Equals(Object) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| GenerateSeed(Int32) |
Gibt die angegebene Anzahl von Seedbytes zurück, die mithilfe des Seedgenerierungsalgorithmus berechnet wird, den diese Klasse zum Seeden selbst verwendet. |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| GetInstance(String, ISecureRandomParameters, Provider) |
Gibt ein |
| GetInstance(String, ISecureRandomParameters, String) |
Gibt ein |
| GetInstance(String, ISecureRandomParameters) |
Gibt ein |
| GetInstance(String, Provider) |
Gibt ein |
| GetInstance(String, String) |
Gibt ein |
| GetInstance(String) |
Gibt ein |
| GetSeed(Int32) |
Gibt die angegebene Anzahl von Seedbytes zurück, die mithilfe des Seedgenerierungsalgorithmus berechnet wird, den diese Klasse zum Seeden selbst verwendet. |
| JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| Next(Int32) |
Generiert eine ganze Zahl, die die vom Benutzer angegebene Anzahl pseudo-zufälliger Bits enthält (rechts ausgerichtet, mit führenden Nullen). |
| NextBoolean() |
Gibt den nächsten pseudozufälligen, gleichmäßig verteilten |
| NextBytes(Byte[], ISecureRandomParameters) |
Generiert eine vom Benutzer angegebene Anzahl zufälliger Bytes mit zusätzlichen Parametern. |
| NextBytes(Byte[]) |
Generiert zufällige Bytes und platziert sie in einem vom Benutzer bereitgestellten Bytearray. (Geerbt von Random) |
| NextDouble() |
Gibt den nächsten pseudorandom, gleichmäßig verteilten |
| NextFloat() |
Gibt den nächsten pseudorandom, gleichmäßig verteilten |
| NextGaussian() |
Gibt den nächsten pseudorandom, Gaussian ("normal") verteilten |
| NextInt() |
Gibt den nächsten pseudozufälligen, gleichmäßig verteilten |
| NextInt(Int32) |
Gibt einen pseudorandom, gleichmäßig verteilten |
| NextLong() |
Gibt den nächsten pseudozufälligen, gleichmäßig verteilten |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
| Reseed() |
Verschiebt dies |
| Reseed(ISecureRandomParameters) |
Verschiebt dies |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| SetSeed(Byte[]) |
Gibt dieses zufällige Objekt mit dem angegebenen Ausgangswert erneut an. |
| SetSeed(Int64) |
Legt den Startwert dieses Zufallszahlengenerators mithilfe eines einzelnen |
| ToArray<T>() |
Erstellt ein verwaltetes Array aus diesem Java Arraywrapper. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| UnregisterFromRuntime() |
Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf. (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| IJavaPeerable.Finalized() |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. (Geerbt von Random) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Diese Klasse stellt einen kryptografisch starken Zufallszahlengenerator (RNG) bereit. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |