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物件的種子材料必須是不可預測的,且所有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)參數,以進一步控制方法的行為。
注意:根據實作不同, generateSeed當 reseednextBytes 熵被收集時,方法可能會阻塞,例如在各種類 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) |
建立 |
屬性
| 名稱 | Description |
|---|---|
| Algorithm |
回傳由此 |
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| InstanceStrong |
傳回 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
此類別提供一個密碼學強的隨機數產生器(RNG)。 (繼承來源 JavaObject) |
| JniPeerMembers |
此類別提供一個密碼學強的隨機數產生器(RNG)。 |
| Parameters |
在此情況下返回有效 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| Provider |
回傳此 |
| 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) |
回傳 |
| GetInstance(String, ISecureRandomParameters, String) |
回傳 |
| GetInstance(String, ISecureRandomParameters) |
回傳 |
| GetInstance(String, Provider) |
回傳 |
| GetInstance(String, String) |
回傳 |
| GetInstance(String) |
回傳 |
| GetSeed(Int32) |
回傳給定的種子位元組數,這些位元組是使用此類別用來做種子的產生演算法計算出來的。 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Next(Int32) |
產生一個整數,包含使用者指定的偽隨機位元數(右對齊,前置零)。 |
| NextBoolean() |
回傳來自此隨機數產生器序列的下一個偽隨機、均勻分布 |
| NextBytes(Byte[], ISecureRandomParameters) |
產生使用者指定數量的隨機位元組,並附加額外參數。 |
| NextBytes(Byte[]) |
隨機產生位元組並將其放入使用者提供的位元組陣列中。 (繼承來源 Random) |
| NextDouble() |
回傳該隨機數產生器序列中 |
| NextFloat() |
回傳該隨機數產生器序列中 |
| NextGaussian() |
回傳下一個偽隨機、高斯分布(「常態分布」) |
| NextInt() |
回傳來自此隨機數產生器序列的下一個偽隨機、均勻分布 |
| NextInt(Int32) |
回傳一個偽隨機、均勻分布 |
| NextLong() |
回傳來自此隨機數產生器序列的下一個偽隨機、均勻分布 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Reseed() |
再用從熵來源讀取的熵輸入重新播種。 |
| Reseed(ISecureRandomParameters) |
再 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
此類別提供一個密碼學強的隨機數產生器(RNG)。 (繼承來源 JavaObject) |
| SetSeed(Byte[]) |
用給定的種子重新播種這個隨機物件。 |
| SetSeed(Int64) |
用單一 |
| 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) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
此類別提供一個密碼學強的隨機數產生器(RNG)。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |