2015-09-07 61 views
0

在自制的ECDHE應用程序的框架中,客戶端和服務器都必須發送一個隨機生成的數字(rng),以便在握手過程中稍後構建MasterSecret(類似於TLS) ...加載/導出隨機數

隨着crypto++,可以很容易地創建這些數字,這要歸功於:

AutoSeededRandomPool rng; 

我的問題是1)他們導出到一個字符串或同等學歷,和2)加載它們從字符串。

我必須把這些數字放在一個框架內,而且也不是Class definitionexamples

在網絡上,我一直無法找到保存/加載示例(如RSA::PublicKeys的示例)。

顯然,我是第一個想這一點,因爲他們examples生成客戶端,並在同一程序服務器,因而並不需要傳輸的數字。

而且,因爲這握手的一部分,我也試着做curvesID一樣...

+0

使用'GenerateBlock(byte * output,size_t size)'生成您的隨機數,然後將其傳輸,加密,打印在橙色的紙上,或者做任何您喜歡的事情。我想我不明白你的問題... – BeyelerStudios

+0

我認爲'prng'實際上是創建的隨機數。事實上,它只是一個**發生器**。 GenerateBlock是一個命令,用於生成僞隨機數。我的錯。 – EisenHeim

+0

@Beyeler應該刪除我的問題嗎? – EisenHeim

回答

0

這個問題是從我的部分誤解,所以我會解釋,在具有任何人的情況下,相同的詢問。它主要來自於crypto++ wiki靈感......

有2點不同的對象:

AutoSeededRandomPool prng; 

prng.GenerateBlock(scratch, scratch.size()); 

AutoSeededRandomPool prng;是隨機數發生器(這將是自種子)

prng.GenerateBlock是命令將從這個隨機數中提取比特來構建所需長度的std::string scratch

而且由於劃痕是一個字符串,我們可以隨心所欲地使用它,所以請參考字符串 import/export。