java加密的強隨機數生成器
阿新 • • 發佈:2019-01-31
java.security
類 SecureRandom
所有已實現的介面:Serializable
public class SecureRandomextends Random
此類提供加密的強隨機數生成器 (RNG)。許多實現都是偽隨機數生成器 (PRNG) 形式,這意味著它們將使用確定的演算法根據實際的隨機種子生成偽隨機序列。其他實現可以生成實際的隨機數,而另一些實現則可能結合使用這兩項技術。
與 Java Security 中其他基於演算法的類一樣,SecureRandom 也提供了與實現無關的演算法,因此,呼叫方(應用程式程式碼)會請求特定的 RNG 演算法並將它傳回到該演算法的 SecureRandom 物件中。如果需要,還可以通過特定的提供程式請求特定的演算法。請參見 getInstance
因此,有以下兩種請求 SecureRandom 物件的方法:僅指定演算法名稱,或者既指定演算法名稱又指定包提供程式。
- 如果僅指定演算法名稱,如下所示:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
系統將確定環境中是否有所請求的演算法實現,是否有多個,是否有首選實現。 - 如果既指定了演算法名稱又指定了包提供程式,如下所示:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
系統將確定在所請求的包中是否有演算法實現;如果沒有,則丟擲異常。
SecureRandom 實現嘗試完全隨機化生成器本身的內部狀態,除非呼叫方在呼叫 getInstance
方法之後又呼叫了 setSeed
方法:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(seed);
在呼叫方從 getInstance
呼叫中獲得 SecureRandom 物件之後,它可以呼叫 nextBytes
來生成隨機位元組:
byte bytes[] = new byte[20]; random.nextBytes(bytes);
呼叫方還可以呼叫 generateSeed
方法來生成給定的種子位元組數(例如,為其他隨機數量生成器提供種子):
byte seed[] = random.generateSeed(20);另請參見:
SecureRandomSpi
, Random
, 序列化表格
構造方法摘要
通過使用此構造方法,呼叫方可獲取一個 SecureRandom 物件,該物件包含的實現來自具有 SecureRandom 實現的最高優先順序已安裝提供程式。 |
通過使用此構造方法,呼叫方可獲取一個 SecureRandom 物件,該物件包含的實現來自具有 SecureRandom 實現的最高優先順序已安裝提供程式。 |
byte[] |
返回給定的種子位元組數量,該數量可使用此類用來為其自身提供種子的種子生成演算法來計算。 |
返回此 SecureRandom 物件實現的演算法的名稱。 |
|
生成實現指定隨機數生成器 (RNG) 演算法的 SecureRandom 物件。 |
|
如果提供程式能夠提供此種 RNG 實現,則為指定的 RNG 演算法(由指定的提供程式提供)生成 SecureRandom 物件。 |
|
如果提供程式能夠提供此種 RNG 實現,則為指定的 RNG 演算法(由指定的提供程式提供)生成 SecureRandom 物件。 |
|
static byte[] |
(int numBytes) 返回給定的種子位元組數量,該數量可使用此類用來為其自身提供種子的種子生成演算法來計算。 |
protected int |
next(int numBits) 生成一個包含使用者指定偽隨機位數的整數(右對齊,帶前導零)。 |
void |
生成使用者指定的隨機位元組數。 |
void |
(byte[] seed) 重新提供此隨機物件的種子。 |
void |
使用給定 long seed 中包含的八個位元組,重新提供此隨機物件的種子。 |