1、生成隨機數的多種方法
- Math.random()一隨機數
- java.util.Random偽隨機數(線性同余法生成)
- java.security.SecureRandom真隨機數
a隨機數,采用的是類似於統計學的隨機數生成規則,其輸出結果很容易預測,因此可能導致被攻擊者擊中。而真隨機數,采用的是類似於密碼學的隨機數生成規則,其輸出結果較難預測,若想要預防被攻擊者攻擊,最好做到使攻擊者根本無法,或不可能鑒別生成的隨機值和真正的隨機值。
2、SecureRandom使用
(1)指定算法名稱
- 僅指定算法名稱:
-
SecureRandom random= SecureRandom.getInstance( "SHA1PRNG");
-
//系統將確定環境中是否有所請求的算法實現,是否有多個,是否有首選實現。
- 既指定了算法名稱又指定了包提供程序:
-
SecureRandom random= SecureRandom.getInstance( "SHA1PRNG","RUN");//系統將確定在所請求的包中是否有算法實現;如果沒有,則拋出異常。
(2)獲取SecureRandom對象后,生成隨機數
-
Integer randNum = random.nextInt(); //生成10位數的隨機數
-
Integer randNum = random.nextInt( 100);//生成0~99的隨機數
總結:因安全掃描結果顯示使用:Math.Random()方法導致熵不足問題,以上作為修改方法。。。