SecureRandom クラス

定義

このクラスは、暗号強度の高い乱数ジェネレーター (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
継承
SecureRandom
属性

注釈

このクラスは、暗号強度の高い乱数ジェネレーター (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 である場合など、エントロピが収集されるときに、 generateSeedreseed 、および nextBytes メソッドがブロックされることがあります。

<h2> スレッド セーフ </h2>SecureRandom オブジェクトは、複数の同時実行スレッドで安全に使用できます。

1.1 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
SecureRandom()

既定の乱数アルゴリズムを実装する安全な乱数ジェネレーター (RNG) を構築します。

SecureRandom(Byte[])

既定の乱数アルゴリズムを実装する安全な乱数ジェネレーター (RNG) を構築します。

SecureRandom(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

SecureRandom(SecureRandomSpi, Provider)

SecureRandom オブジェクトを作成します。

プロパティ

名前 説明
Algorithm

この SecureRandom オブジェクトによって実装されるアルゴリズムの名前を返します。

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
InstanceStrong

SecureRandom オブジェクトを返します。

JniIdentityHashCode

このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。

(継承元 Object)
JniPeerMembers

このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。

Parameters

このSecureRandom インスタンスの有効なSecureRandomParametersを返します。

PeerReference

このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。

(継承元 Object)
Provider

この SecureRandom オブジェクトのプロバイダーを返します。

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) アルゴリズムを実装し、指定したSecureRandomParameters要求をサポートするSecureRandom オブジェクトを返します。

GetInstance(String, ISecureRandomParameters, String)

指定した乱数ジェネレーター (RNG) アルゴリズムを実装し、指定したSecureRandomParameters要求をサポートするSecureRandom オブジェクトを返します。

GetInstance(String, ISecureRandomParameters)

指定した乱数ジェネレーター (RNG) アルゴリズムを実装し、指定したSecureRandomParameters要求をサポートするSecureRandom オブジェクトを返します。

GetInstance(String, Provider)

指定した乱数ジェネレーター (RNG) アルゴリズムを実装する SecureRandom オブジェクトを返します。

GetInstance(String, String)

指定した乱数ジェネレーター (RNG) アルゴリズムを実装する SecureRandom オブジェクトを返します。

GetInstance(String)

指定した乱数ジェネレーター (RNG) アルゴリズムを実装する SecureRandom オブジェクトを返します。

GetSeed(Int32)

このクラスがシード処理に使用するシード生成アルゴリズムを使用して計算された、指定されたシード バイト数を返します。

JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Next(Int32)

ユーザーが指定した擬似ランダム ビットの数 (右揃え、先頭に 0 を付けます) を含む整数を生成します。

NextBoolean()

この乱数ジェネレーターのシーケンスから、次の擬似乱数 boolean 一様に分散された値を返します。

(継承元 Random)
NextBytes(Byte[], ISecureRandomParameters)

追加のパラメーターを使用して、ユーザー指定のランダム バイト数を生成します。

NextBytes(Byte[])

ランダム バイトを生成し、ユーザー指定のバイト配列に配置します。

(継承元 Random)
NextDouble()

この乱数ジェネレーターのシーケンスから、0.01.0の間で一様に分散double次の擬似乱数値を返します。

(継承元 Random)
NextFloat()

この乱数ジェネレーターのシーケンスから、0.01.0の間で一様に分散float次の擬似乱数値を返します。

(継承元 Random)
NextGaussian()

この乱数ジェネレーターのシーケンスからの平均0.0と標準偏差1.0を持つ、次の擬似乱数ガウス分布double値を返します。

(継承元 Random)
NextInt()

この乱数ジェネレーターのシーケンスから、次の擬似乱数 int 一様に分散された値を返します。

(継承元 Random)
NextInt(Int32)

この乱数ジェネレーターのシーケンスから取得された、0 (包括) から指定した値 (排他的) までの間で、擬似乱数の一様に分散された int 値を返します。

(継承元 Random)
NextLong()

この乱数ジェネレーターのシーケンスから、次の擬似乱数 long 一様に分散された値を返します。

(継承元 Random)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
Reseed()

この SecureRandom をエントロピ ソースから読み取ったエントロピー入力で再シードします。

Reseed(ISecureRandomParameters)

この SecureRandom をエントロピ ソースから読み取ったエントロピー入力と追加のパラメーターで再シードします。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetSeed(Byte[])

指定されたシードを使用して、このランダム オブジェクトを再シードします。

SetSeed(Int64)

1 つの long シードを使用して、この乱数ジェネレーターのシードを設定します。

(継承元 Random)
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)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

このクラスは、暗号強度の高い乱数ジェネレーター (RNG) を提供します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象