日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

java 实现真正的随机数_关于java:SecureRandom的Android实现是否产生真正的随机数?...

發(fā)布時間:2023/12/10 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 实现真正的随机数_关于java:SecureRandom的Android实现是否产生真正的随机数?... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我已經(jīng)閱讀過,一般來說,SecureRandom的一些實現(xiàn)可能會產(chǎn)生真正的隨機數(shù)。

特別是,Android文檔說

instances of this class will generate an initial seed using an internal entropy source, such as /dev/urandom

但這是否意味著它將產(chǎn)生真正的隨機數(shù)(即,而不是偽隨機數(shù))?

如果我用這種方式在Android中使用SecureRandom…

…當我調(diào)用sr.nextBoolean()時,會得到一個真正的隨機輸出嗎?

或者產(chǎn)出可能更多(或更少?)隨機,如果我每次都通過這樣做獲得輸出:江戶十一〔二〕號?

這不一定是真的,因為有些Android設(shè)備沒有硬件來生成真正的隨機數(shù)。至于具有該硬件的設(shè)備是否會使用它,我不這么認為,盡管Linux內(nèi)核可能會加載一個模塊,從該硬件獲取真正的隨機數(shù)。

afaik所有實現(xiàn)都使用不同的形式或算法散列。雖然它們具有良好的數(shù)學(xué)性質(zhì),但并非真正的隨機性。

從Android開發(fā)人員的博客中,"我們已經(jīng)確定,使用Java加密體系結(jié)構(gòu)(JCA)來進行密鑰生成、簽名或隨機數(shù)生成的應(yīng)用程序可能不會因為底層PRNG初始化不當而在Android設(shè)備上獲得密碼強大的值……"。之后,我相信AOSP會切換到OpenSSL的生成器。變化發(fā)生在果凍豆上。

@我有代碼可以使用JNI讀取Android的傳感器,然后輸入一個隨機數(shù)生成器(比如OpenSSL或Crypto++)。您可以使用它來做同樣的事情,或者使用它來生成Java HMAC/SHA-1生成器。"肉和土豆"源文件位于android/crypto++prng的Pastebin上,由傳感器自動播種(由jww提供)。我希望盡快將Eclipse項目上傳到Crypto++wiki(wiki目前因配置更改而出現(xiàn)問題)。

堅持。/dev/urandom僅用于生成初始種子。在那之后,一切都是算法。SecureRandom需要"提供加密強隨機數(shù)生成器(RNG)"。

"真"和"偽隨機"隨機數(shù)對不同的人來說意味著很多不同的事情。最好避免這些。

/dev/urandom的代表性很差,因為人們不理解它和/dev/random之間的區(qū)別(比你想象的要差很多,少得多)。

如果你問/dev/urandom的種子植入是否會損害SecureRandom用于加密目的的適合性,答案是響亮的"不"。

如果你有時間的話,你可能會想讀我關(guān)于整個問題的文章。

你好,托馬斯,我想你有一個打字錯誤-一個鈾之國的。(而且,不,這不是為了加密目的。)

根據(jù)Android開發(fā)者文檔:

(SecureRandom) complies with the statistical random number generator tests specified in FIPS 140-2, Security Requirements for Cryptographic Modules, section 4.9.1

然而,同樣的警告也適用于Android,就像Java一樣:

Many SecureRandom implementations are in the form of a pseudo-random number generator (PRNG), which means they use a deterministic algorithm to produce a pseudo-random sequence from a true random seed. Other implementations may produce true random numbers, and yet others may use a combination of both techniques.

因此,簡短的回答是:這取決于實現(xiàn),但是如果您對FIPS 140-2滿意,那么SecureRandom就足以滿足您的目的了。

關(guān)鍵的答案是,由Linux內(nèi)核定義的/dev/urandom保證不會阻塞。重點是在產(chǎn)生足夠的熵的同時不拖延用戶。如果Android文檔說他們正在使用/dev/urandom進行初始化,并且內(nèi)核中沒有足夠的熵來提供隨機數(shù),那么內(nèi)核將返回到偽隨機算法。

根據(jù)內(nèi)核文檔,除了"長壽命[加密]密鑰",/dev/urandom幾乎可以用于所有目的。考慮到您的預(yù)期用途,我懷疑Android SecureRandom將證明足夠隨機用于您的目的。

Android是一種獨特的野獸。它有/dev/urandom,但我不相信android的SecureRandom和SecureRandomSpi在使用它。相反,種子確實很弱——它本質(zhì)上是系統(tǒng)屬性(比如序列號、基帶版本)、時間(毫秒和納秒)和字符串"你的隨機性都屬于我們"。查看entropyService.java。

總結(jié)

以上是生活随笔為你收集整理的java 实现真正的随机数_关于java:SecureRandom的Android实现是否产生真正的随机数?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。