專利名稱:一種軟件實現(xiàn)的真隨機數(shù)產(chǎn)生方法
技術(shù)領(lǐng)域:
本發(fā)明涉及只使用軟件的隨機函數(shù)配合設(shè)備的上電時間的不可預(yù)測性生成真隨 機數(shù)的方法。
背景技術(shù):
真正意義上的隨機數(shù)在某次產(chǎn)生過程中是按照實驗過程中表現(xiàn)的分布概率隨機 產(chǎn)生的,其結(jié)果是不可預(yù)測的,是不可見的。而以往使用電子設(shè)備中程序的隨機函數(shù)是按照 一定算法模擬產(chǎn)生的,這些數(shù)列是“似乎”隨機的數(shù),實際上它們是通過一個固定的、可以重 復(fù)的計算方法產(chǎn)生的。它們不真正地隨機,因為它們實際上是可以依據(jù)函數(shù)的架構(gòu)和程序 的運行時間計算出來的,其結(jié)果是確定的,是可見的。我們可以認(rèn)為這個可預(yù)見的結(jié)果其出 現(xiàn)的概率是100%。所以以往使用軟件隨機函數(shù)所產(chǎn)生的“隨機數(shù)”并不隨機,是偽隨機數(shù)。通常目前真隨機數(shù)的產(chǎn)生方法都是依賴與硬件電路來實現(xiàn),這樣無疑增加設(shè)備的 設(shè)計復(fù)雜度和設(shè)備成本。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種軟件實現(xiàn)的真隨機數(shù)產(chǎn)生方法,以解決現(xiàn)有單純使用 軟件只能生成偽隨機數(shù)的問題。本發(fā)明所提供的一種真隨機數(shù)產(chǎn)生方法的具體方案如下設(shè)備第一次上電時,電子設(shè)備的程序調(diào)用存儲模塊中的初始隨機種子,隨機函數(shù) 使用該隨機種子產(chǎn)生一個偽隨機數(shù),并將該偽隨機數(shù)寫入存儲模塊,之后程序每循環(huán)一次, 生成一個偽隨機數(shù),并寫入存儲模塊;其中程序循環(huán)的周期都是毫秒級別的,所以每次設(shè)備 的上電時間內(nèi),隨機函數(shù)可以生成很多次隨機數(shù)。最后設(shè)備斷電后,因設(shè)備上電至設(shè)備斷電 的時間不可預(yù)知性,最終生成的隨機數(shù)是無法預(yù)知的。當(dāng)設(shè)備第二次上電時即調(diào)用上次設(shè) 備生成的無法預(yù)知的隨機數(shù)作為隨機種子,即可生成真隨機數(shù)。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明所提供的真隨機數(shù)生成方法的示意圖;圖2為本發(fā)明所提供的真隨機數(shù)生成方法的結(jié)構(gòu)示意圖;圖3為本發(fā)明所提供的真隨機數(shù)生成方法的流程具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于 本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護(hù)的范圍。申請人:經(jīng)研究發(fā)現(xiàn),通過軟件方式生成的隨機數(shù),都是通過一個固定的,可以重復(fù) 的方法根據(jù)一個隨機種子生成一個隨機數(shù),因此以往軟件生成的隨機數(shù)都稱為偽隨機數(shù), 其結(jié)果是確定的,是可預(yù)見的。當(dāng)然如果隨機種子是一個真隨機數(shù),那以此隨機種子所生成 的隨機數(shù),也是一個真隨機數(shù)。但是電子設(shè)備的一致性導(dǎo)致它每次上電后所獲取隨機種子 也只能通過固定的算法從固定的位置提取出來,所以隨機種子也是確定。因此以往單靠軟 件不能生成的真隨機數(shù)。為了解決上述問題,本發(fā)明提供了一種軟件實現(xiàn)的真隨機數(shù)產(chǎn)生方法,該方法包 括隨機函數(shù)、循環(huán)模塊、存儲模塊和隨機種子隨機函數(shù)用于生成偽隨機數(shù),存儲模塊用來存儲隨機函數(shù)經(jīng)過循環(huán)模塊后生成的 隨機數(shù),并將此隨機數(shù)作為下次上電隨機函數(shù)的隨機種子。本發(fā)明實施例所提供的隨機數(shù)生成系統(tǒng)中各個模塊之間關(guān)系示意圖如圖1所示, 當(dāng)設(shè)備上電開始運行時,隨機函數(shù)從存儲模塊中提取隨機種子,依據(jù)此隨機種子生成隨機 數(shù),通過循環(huán)模塊后,隨機函數(shù)再次生成隨機數(shù),并將此隨機數(shù)寫入存儲模塊,替換之前的 隨機種子,以此類推。若干次循環(huán)后,設(shè)備斷電了,這是存儲模塊中的隨機種子也被替換了 若干次。最終的替換的隨機種子即作為下次上電的隨機種子。例如設(shè)備第一次上電時,存 儲模塊中預(yù)存的隨機種子為Ni,隨機函數(shù)上電后提取m作為初始的隨機種子,生成隨機數(shù) N2,N2和m之間的關(guān)系是特定的,即通過m可以推導(dǎo)出N2的值;軟件經(jīng)過一次循環(huán)后隨 機函數(shù)又生成一個隨機數(shù)N3,此時存儲模塊將原先的初始的隨機種子m替換為N3,N3依舊 是一個可依據(jù)m推導(dǎo)預(yù)見的一個隨機數(shù);以此類推,軟件循環(huán)若干次后,設(shè)備斷電,在斷電 前的一次程序循環(huán)隨機函數(shù)生成了隨機數(shù)Nm,存儲模塊將其存儲的隨機種子替換為了 Nm。 因設(shè)備是首次上電,初始隨機種子是固定的Ni,故此次設(shè)備運行過程中某一時刻所生成的 隨機數(shù)都是可預(yù)見,可推導(dǎo)出的。但是由于設(shè)備的運行時間是不可控的,且設(shè)備運行時間是 軟件循環(huán)所需時間至少上萬倍的差距,因此對于設(shè)備第二次上電時,隨機函數(shù)從存儲模塊 中所提取的隨機種子Nm來說就是一個不可預(yù)見的數(shù)值,即真隨機數(shù)。而從設(shè)備第二次上電 以后,都會已Nm這個真隨機數(shù)來產(chǎn)生隨機數(shù),因隨機種子是不可預(yù)見的,故之后生成的隨 機數(shù)也是不可預(yù)見推導(dǎo)的,即此時生成的歲數(shù)為真隨機數(shù)。應(yīng)用上述技術(shù)方案,有效的利用了設(shè)備上電工作時間的不可預(yù)見性生成真隨機 數(shù)。與現(xiàn)有技術(shù)相比,解決了純軟件申城隨機數(shù)因隨機種子固定而只能生成偽隨機數(shù)的問題。請參閱圖2,圖2為本發(fā)明實施例提供的視頻轉(zhuǎn)接設(shè)備的結(jié)構(gòu)示意圖。該視頻轉(zhuǎn)接 設(shè)備包括提取裝置10、生成裝置11、循環(huán)裝置13和寫入裝置14。其中提取裝置10,用于從存儲模塊中提出隨機種子;生成裝置11,用于通過隨機函數(shù)生成隨機數(shù);循環(huán)裝置12,用于在設(shè)備上電期間不停生成隨機數(shù);寫入裝置13,用于將生成裝置生成的隨機數(shù)寫入存儲模塊。本發(fā)明中的提取裝置和寫入裝置都是通過程序運行的處理器對存儲模塊進(jìn)行操作,生成裝置是由設(shè)備程序中的隨機函數(shù)完成,循環(huán)裝置是有設(shè)備中的各種功能模塊運行 完成。應(yīng)用以上的技術(shù)方案,利用設(shè)備上電時間不可預(yù)見性,循環(huán)裝置運行次數(shù)的不可 預(yù)見性,生成一個不可預(yù)見的隨機種子,再通過隨機函數(shù)即可生成真隨機數(shù)。圖3是本發(fā)明實施例所提供的一種軟件生成真隨機數(shù)的方法,該方法用于上述真 隨機數(shù)生成系統(tǒng)中,該方法的具體步驟如下,包括SlOl 設(shè)備上電;S102 從存儲模塊中提取隨機種子;S103 隨機函數(shù)依據(jù)隨機種子第一次生成隨機數(shù)。S104 存儲模塊將原有隨機種子用此隨機數(shù)替代S105 軟件循環(huán)1次S106 隨機函數(shù)依據(jù)隨機種子第二次生成隨機數(shù)S107 存儲模塊將原有隨機種子用此隨機數(shù)替代S108:軟件循環(huán)η次S109 隨機函數(shù)依據(jù)隨機種子第η次生成隨機數(shù)SllO 存儲模塊將原有隨機種子用此隨機數(shù)替代Slll 軟件循環(huán)過程中設(shè)備斷電應(yīng)用上述技術(shù)方案,電子設(shè)備依據(jù)設(shè)備上電運行的不可預(yù)知性來控制軟件軟件循 環(huán)次數(shù)η,隨機函數(shù)依據(jù)這個不可預(yù)知的循環(huán)次數(shù)η生成不可預(yù)知的隨機數(shù),并將次隨機數(shù) 作為下次上電設(shè)備初始的隨機種子。與現(xiàn)有技術(shù)相比,解決了現(xiàn)有軟件生成隨機數(shù)的技術(shù) 每次上電都只能使用可預(yù)見可推導(dǎo)的隨機種子,無法生成真隨機數(shù)的問題。應(yīng)用上述技術(shù)方案,保證在設(shè)備第二次上電之后能夠生成無法預(yù)知的真隨機數(shù)。本說明書中對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所 以描述的比較簡單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元 及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和 軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些 功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè) 技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng) 認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí) 行的軟件模塊,或者二者的結(jié)合來實施。存儲模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存 儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù) 領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明 將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一 致的最寬的范圍。
權(quán)利要求
1.一種通過軟件和設(shè)備上電時間生成真隨機數(shù)的方法,包括隨機函數(shù)、程序循環(huán)和存 儲模塊,其特征在于隨機函數(shù)調(diào)用存儲模塊中的隨機種子來生成隨機數(shù),并通過程序循環(huán) 不停的生成隨機數(shù)并更新存儲模塊中的隨機種子,存儲中的最新的隨機種子將作為下次上 電后隨機函數(shù)新的隨機種子。
2.根據(jù)權(quán)利要求1所述的隨機函數(shù),其特征在于,可以依據(jù)隨機種子生成隨機數(shù)的軟 件函數(shù),在已知隨機種子的情況下其結(jié)果是可見的。
3.根據(jù)權(quán)利要求2所述的隨機函數(shù),其特征還在于,可以依據(jù)隨機種子不停的循環(huán)生 成新的隨機數(shù),且每次生成的隨機數(shù)不同,但從起初算起,相同循環(huán)次數(shù)所生成的隨機數(shù)結(jié) 果是相同的。
4.根據(jù)權(quán)利要求1所述的存儲模塊,其特征在于,能夠根據(jù)隨機函數(shù)新生成的隨機數(shù), 進(jìn)行更新,同時能夠在設(shè)備上電時為隨機函數(shù)提供隨機種子。
5.根據(jù)權(quán)利要求1所述的程序循環(huán),其特征在于,整個電子設(shè)備軟件隨機函數(shù)運行的 其他函數(shù)運行的過程,可以認(rèn)為隨機函數(shù)可以是其他函數(shù)運行一次即生成一次密碼,也可 其他函數(shù)運行多次生成一次密碼。
6.根據(jù)權(quán)利要求5所訴的程序循環(huán),其特征還在于,此程序循環(huán)并非特定的為生成隨 機數(shù)而作的循環(huán),此程序循環(huán)是電子設(shè)備正常運行中必要的程序運行動作。
全文摘要
本發(fā)明公開了一種軟件實現(xiàn)的真隨機數(shù)產(chǎn)生方法。它包括偽隨機數(shù)產(chǎn)生模塊,循環(huán)模塊,存儲模塊。偽隨機數(shù)模塊根據(jù)存儲模塊里的存儲的隨機種子生成偽隨機數(shù);循環(huán)模塊通過軟件循環(huán)不停的利用偽隨機數(shù)產(chǎn)生新的偽隨機數(shù);存儲模塊用于定期保存循環(huán)模塊產(chǎn)生的隨機數(shù)。因為電子設(shè)備在出廠檢測、用戶使用過程中上電時間不確定性,可使設(shè)備在使用若干次即可生成真隨機數(shù)。
文檔編號G06F7/58GK102063285SQ20101060300
公開日2011年5月18日 申請日期2010年12月24日 優(yōu)先權(quán)日2010年12月24日
發(fā)明者方震 申請人:倍奧銳(北京)科技有限公司