SecureRandom生成隨機數


1、生成隨機數的多種方法

  • Math.random()一隨機數
  • java.util.Random偽隨機數(線性同余法生成)
  • java.security.SecureRandom真隨機數

a隨機數,采用的是類似於統計學的隨機數生成規則,其輸出結果很容易預測,因此可能導致被攻擊者擊中。而真隨機數,采用的是類似於密碼學的隨機數生成規則,其輸出結果較難預測,若想要預防被攻擊者攻擊,最好做到使攻擊者根本無法,或不可能鑒別生成的隨機值和真正的隨機值。

 

2、SecureRandom使用

(1)指定算法名稱

  • 僅指定算法名稱:
  1.  
    SecureRandom random= SecureRandom.getInstance( "SHA1PRNG");
  2.  
    //系統將確定環境中是否有所請求的算法實現,是否有多個,是否有首選實現。
  • 既指定了算法名稱又指定了包提供程序:
  1.  
    SecureRandom random= SecureRandom.getInstance( "SHA1PRNG","RUN");
    //系統將確定在所請求的包中是否有算法實現;如果沒有,則拋出異常。

(2)獲取SecureRandom對象后,生成隨機數

  1.  
    Integer randNum = random.nextInt(); //生成10位數的隨機數
  2. Integer randNum = random.nextInt( 100);//生成0~99的隨機數

 總結:因安全掃描結果顯示使用:Math.Random()方法導致熵不足問題,以上作為修改方法。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM