語言

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
繼承
屬性

備註

此類別提供一個密碼學強的隨機數產生器(RNG)。

一個密碼學強度強的隨機數至少符合 FIPS 140-2《密碼模組http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf安全要求》第 4.9.1 節中規定的統計隨機數產生器測試。 此外,必須 SecureRandom 產生非確定性輸出。 因此,任何傳遞給SecureRandom物件的種子材料必須是不可預測的,且所有SecureRandom輸出序列必須具備密碼學強度,詳見 RFC 4086:安全性http://tools.ietf.org/html/rfc4086的隨機性要求

許多 SecureRandom 實作採用偽隨機數產生器(PRNG,亦稱為確定性隨機位元產生器或 DRBG),意即使用確定性演算法從隨機種子產生偽隨機序列。 其他實作可能產生真正的隨機數,也有則結合兩種技術。

呼叫者透過 SecureRandom 無參數建構子或其中一種 getInstance 方法取得實例。 例如:

<引用>

SecureRandom r1 = new SecureRandom();
            SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
            SecureRandom r3 = SecureRandom.getInstance("DRBG",
                    DrbgParameters.instantiation(128, RESEED_ONLY, null));

</區塊引用>

上述第三句回傳 SecureRandom 特定演算法的物件,支援特定的實例化參數。 實作的有效實例化參數必須符合此最低請求,但不一定相同。 例如,即使請求本身不需特定功能,實際實例化也能提供該功能。 實作可能會懶惰地實例化 a SecureRandom ,直到實際使用為止,但有效的實例化參數必須在建立後立即確定,且 #getParameters() 應該總是回傳相同且不改變的結果。

典型的呼叫器 SecureRandom 會呼叫以下方法來取得隨機位元組:

<引用>

SecureRandom random = new SecureRandom();
            byte[] bytes = new byte[20];
            random.nextBytes(bytes);

</區塊引用>

呼叫者也可以呼叫此 #generateSeed 方法來產生一定數量的種子位元組(例如,用來種子其他隨機數產生器):

<引用>

byte[] seed = random.generateSeed(20);

</區塊引用>

新建立的PRNG SecureRandom 物件不會被做種(除非是由 創建 #SecureRandom(byte[]))。 第一次呼叫 nextBytes 會強制它從實作特定的熵來源做種子。 如果 setSeed 之前被呼叫,這種自我播種不會發生。

SecureRandom A 可隨時透過呼叫 reseed or setSeed 方法重新播種。 該 reseed 方法會讀取來自熵來源的熵輸入,以重新播種自身。 此 setSeed 方法要求呼叫者提供種子。

請注意,並非所有reseed實作都支援此功能SecureRandom

有些SecureRandom實作可能會接受 AND SecureRandomParameters#nextBytes(byte[], SecureRandomParameters) 中某個#reseed(SecureRandomParameters)參數,以進一步控制方法的行為。

注意:根據實作不同, generateSeedreseednextBytes 熵被收集時,方法可能會阻塞,例如在各種類 Unix 作業系統中,若熵來源為 /dev/random。

<h2> 執行緒安全 </h2>SecureRandom 物件可安全地被多個並行執行緒使用。

在 1.1 版本中加入。

Java 文件 java.security.SecureRandom

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
SecureRandom()

構建一個安全隨機數產生器(RNG),實作預設隨機數演算法。

SecureRandom(Byte[])

構建一個安全隨機數產生器(RNG),實作預設隨機數演算法。

SecureRandom(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

SecureRandom(SecureRandomSpi, Provider)

建立 SecureRandom 物件。

屬性

名稱 Description
Algorithm

回傳由此 SecureRandom 物件實作的演算法名稱。

Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
InstanceStrong

傳回 SecureRandom 物件。

JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
JniPeerMembers

此類別提供一個密碼學強的隨機數產生器(RNG)。

Parameters

在此情況下返回有效SecureRandomParametersSecureRandom值。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
Provider

回傳此 SecureRandom 物件的提供者。

ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

方法

名稱 Description
Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
Equals(Object)

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
GenerateSeed(Int32)

回傳給定的種子位元組數,這些位元組是使用此類別用來做種子的產生演算法計算出來的。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GetInstance(String, ISecureRandomParameters, Provider)

回傳 SecureRandom 一個實作指定隨機數產生器(RNG)演算法並支援指定 SecureRandomParameters 請求的物件。

GetInstance(String, ISecureRandomParameters, String)

回傳 SecureRandom 一個實作指定隨機數產生器(RNG)演算法並支援指定 SecureRandomParameters 請求的物件。

GetInstance(String, ISecureRandomParameters)

回傳 SecureRandom 一個實作指定隨機數產生器(RNG)演算法並支援指定 SecureRandomParameters 請求的物件。

GetInstance(String, Provider)

回傳 SecureRandom 一個實作指定隨機數產生器(RNG)演算法的物件。

GetInstance(String, String)

回傳 SecureRandom 一個實作指定隨機數產生器(RNG)演算法的物件。

GetInstance(String)

回傳 SecureRandom 一個實作指定隨機數產生器(RNG)演算法的物件。

GetSeed(Int32)

回傳給定的種子位元組數,這些位元組是使用此類別用來做種子的產生演算法計算出來的。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Next(Int32)

產生一個整數,包含使用者指定的偽隨機位元數(右對齊,前置零)。

NextBoolean()

回傳來自此隨機數產生器序列的下一個偽隨機、均勻分布 boolean 的值。

(繼承來源 Random)
NextBytes(Byte[], ISecureRandomParameters)

產生使用者指定數量的隨機位元組,並附加額外參數。

NextBytes(Byte[])

隨機產生位元組並將其放入使用者提供的位元組陣列中。

(繼承來源 Random)
NextDouble()

回傳該隨機數產生器序列中double0.0下一個偽隨機、均勻分布1.0的值。

(繼承來源 Random)
NextFloat()

回傳該隨機數產生器序列中float0.0下一個偽隨機、均勻分布1.0的值。

(繼承來源 Random)
NextGaussian()

回傳下一個偽隨機、高斯分布(「常態分布」) double 值,均 0.0 值與標準差 1.0 皆為此隨機數產生器的序列。

(繼承來源 Random)
NextInt()

回傳來自此隨機數產生器序列的下一個偽隨機、均勻分布 int 的值。

(繼承來源 Random)
NextInt(Int32)

回傳一個偽隨機、均勻分布 int 的值,介於0(含)與指定值(排他)之間,取自此隨機數產生器的序列。

(繼承來源 Random)
NextLong()

回傳來自此隨機數產生器序列的下一個偽隨機、均勻分布 long 的值。

(繼承來源 Random)
Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
Reseed()

再用從熵來源讀取的熵輸入重新播種。SecureRandom

Reseed(ISecureRandomParameters)

SecureRandom 用從熵來源讀取的熵輸入並加上額外參數來重新播種。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
SetSeed(Byte[])

用給定的種子重新播種這個隨機物件。

SetSeed(Int64)

用單一 long 種子設定這個隨機數產生器的種子。

(繼承來源 Random)
ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

此類別提供一個密碼學強的隨機數產生器(RNG)。

(繼承來源 Random)

擴充方法

名稱 Description
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 端是否有效。

適用於