SecureRandom クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。
[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
- 継承
- 属性
注釈
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。
暗号的に強力な乱数は、 FIPS 140-2、暗号化モジュールのセキュリティ要件http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf、セクション 4.9.1 で指定されている統計的乱数ジェネレーター テストに最小限準拠しています。 さらに、 SecureRandom は非決定的な出力を生成する必要があります。 したがって、SecureRandom オブジェクトに渡されるシード マテリアルは予測不可能である必要があり、「RFC 4086: Randomness Requirements for Securityhttp://tools.ietf.org/html/rfc4086」で説明されているように、すべてのSecureRandom出力シーケンスは暗号的に強力である必要があります。
多くの SecureRandom 実装は、擬似乱数ジェネレーター (PRNG、決定論的ランダム ビット ジェネレーターまたは DRBG とも呼ばれます) の形式です。これは、決定論的アルゴリズムを使用してランダム シードから擬似ランダム シーケンスを生成することを意味します。 他の実装では真の乱数が生成される場合がありますが、他の実装では両方の手法を組み合わせて使用できます。
呼び出し元は、引数なしのコンストラクターまたは getInstance メソッドのいずれかを使用して、SecureRandom インスタンスを取得します。 例えば次が挙げられます。
<blockquote>
SecureRandom r1 = new SecureRandom();
SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
SecureRandom r3 = SecureRandom.getInstance("DRBG",
DrbgParameters.instantiation(128, RESEED_ONLY, null));
</blockquote>
上記の 3 番目のステートメントは、特定のインスタンス化パラメーターをサポートする特定のアルゴリズムの SecureRandom オブジェクトを返します。 実装の有効なインスタンス化されたパラメーターは、この最小要求と一致する必要がありますが、必ずしも同じではありません。 たとえば、要求に特定の機能が必要ない場合でも、実際のインスタンス化で機能を提供できます。 実装では、実際に使用されるまで SecureRandom を遅延的にインスタンス化できますが、有効なインスタンス化パラメーターは作成直後に決定する必要があり、 #getParameters() は常に同じ結果を変更せずに返す必要があります。
SecureRandomの一般的な呼び出し元は、ランダムバイトを取得するために次のメソッドを呼び出します。
<blockquote>
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
</blockquote>
呼び出し元は、 #generateSeed メソッドを呼び出して、特定の数のシード バイトを生成することもできます (たとえば、他の乱数ジェネレーターをシード処理するため)。
<blockquote>
byte[] seed = random.generateSeed(20);
</blockquote>
新しく作成された PRNG SecureRandom オブジェクトはシード処理されません ( #SecureRandom(byte[])によって作成される場合を除く)。
nextBytesを最初に呼び出すと、実装固有のエントロピ ソースから強制的にシード処理されます。 このセルフシード処理は、 setSeed が以前に呼び出された場合には発生しません。
SecureRandomは、reseedメソッドまたは setSeed メソッドを呼び出すことによって、いつでも再シードできます。
reseed メソッドは、エントロピ ソースからエントロピー入力を読み取って、それ自体を再シードします。
setSeed メソッドでは、呼び出し元がシードを提供する必要があります。
reseedは、すべてのSecureRandom実装でサポートされない場合があることに注意してください。
一部のSecureRandom実装では、メソッドの動作をさらに制御するために、#nextBytes(byte[], SecureRandomParameters)メソッドと#reseed(SecureRandomParameters)メソッドでSecureRandomParameters パラメーターを受け入れる場合があります。
注: 実装によっては、エントロピ ソースがさまざまな Unix に似たオペレーティング システムで /dev/random である場合など、エントロピが収集されるときに、 generateSeed、 reseed 、および nextBytes メソッドがブロックされることがあります。
<h2> スレッド セーフ </h2>SecureRandom オブジェクトは、複数の同時実行スレッドで安全に使用できます。
1.1 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| SecureRandom() |
既定の乱数アルゴリズムを実装する安全な乱数ジェネレーター (RNG) を構築します。 |
| SecureRandom(Byte[]) |
既定の乱数アルゴリズムを実装する安全な乱数ジェネレーター (RNG) を構築します。 |
| SecureRandom(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
| SecureRandom(SecureRandomSpi, Provider) |
|
プロパティ
| 名前 | 説明 |
|---|---|
| Algorithm |
この |
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| InstanceStrong |
|
| JniIdentityHashCode |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| JniPeerMembers |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 |
| Parameters |
この |
| PeerReference |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| Provider |
この |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Dispose() |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| Dispose(Boolean) |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GenerateSeed(Int32) |
このクラスがシード処理に使用するシード生成アルゴリズムを使用して計算された、指定されたシード バイト数を返します。 |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| GetInstance(String, ISecureRandomParameters, Provider) |
指定した乱数ジェネレーター (RNG) アルゴリズムを実装し、指定した |
| GetInstance(String, ISecureRandomParameters, String) |
指定した乱数ジェネレーター (RNG) アルゴリズムを実装し、指定した |
| GetInstance(String, ISecureRandomParameters) |
指定した乱数ジェネレーター (RNG) アルゴリズムを実装し、指定した |
| GetInstance(String, Provider) |
指定した乱数ジェネレーター (RNG) アルゴリズムを実装する |
| GetInstance(String, String) |
指定した乱数ジェネレーター (RNG) アルゴリズムを実装する |
| GetInstance(String) |
指定した乱数ジェネレーター (RNG) アルゴリズムを実装する |
| GetSeed(Int32) |
このクラスがシード処理に使用するシード生成アルゴリズムを使用して計算された、指定されたシード バイト数を返します。 |
| JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Next(Int32) |
ユーザーが指定した擬似ランダム ビットの数 (右揃え、先頭に 0 を付けます) を含む整数を生成します。 |
| NextBoolean() |
この乱数ジェネレーターのシーケンスから、次の擬似乱数 |
| NextBytes(Byte[], ISecureRandomParameters) |
追加のパラメーターを使用して、ユーザー指定のランダム バイト数を生成します。 |
| NextBytes(Byte[]) |
ランダム バイトを生成し、ユーザー指定のバイト配列に配置します。 (継承元 Random) |
| NextDouble() |
この乱数ジェネレーターのシーケンスから、 |
| NextFloat() |
この乱数ジェネレーターのシーケンスから、 |
| NextGaussian() |
この乱数ジェネレーターのシーケンスからの平均 |
| NextInt() |
この乱数ジェネレーターのシーケンスから、次の擬似乱数 |
| NextInt(Int32) |
この乱数ジェネレーターのシーケンスから取得された、0 (包括) から指定した値 (排他的) までの間で、擬似乱数の一様に分散された |
| NextLong() |
この乱数ジェネレーターのシーケンスから、次の擬似乱数 |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| Reseed() |
この |
| Reseed(ISecureRandomParameters) |
この |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetSeed(Byte[]) |
指定されたシードを使用して、このランダム オブジェクトを再シードします。 |
| SetSeed(Int64) |
1 つの |
| ToArray<T>() |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| ToString() |
オブジェクトの文字列表現を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| Wait() |
現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。 (継承元 Object) |
| Wait(Int64, Int32) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
| Wait(Int64) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| IJavaPeerable.Finalized() |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| IJavaPeerable.JniManagedPeerState |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 (継承元 Object) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|