2016-11-21 238 views
0

我在我的客戶端 - 服務器應用程序中使用AES進行加密。如何在C++中安全地存儲AES加密密鑰?

目前,我已經簡單地定義了一個靜態對稱密鑰,該密鑰在客戶端和服務器中都是硬編碼的。

我有一種感覺,這不是很安全,因爲通過反轉/反彙編可執行文件來獲得密鑰不應該太困難。另一方面,我不明白Diffie-Hellman這樣的密鑰交換是如何解決問題的,因爲密鑰最終會存儲在客戶端的內存中,並且可能(可能)也會通過某種方法提取。

我到處都在閱讀,包括加密和/或混淆密鑰在內的所有內容都不安全。但是它如何安全地完成?

+0

使用非對稱密碼算法,這意味着每個部分不知道對方的部分私鑰。這是純粹的數學。 – jweyrich

+0

@jweyrich這不會通過反彙編來阻止關鍵發現,是嗎? –

+4

@jweyrich這樣做只會阻止網絡上的某個人找到密鑰,而不會阻止某人訪問該計算機。 – user66875

回答

-3

是你的密鑰大小固定的說128字節或256字節。如果是,那麼你可以爲你的關鍵數據定義一個結構。然後將其存儲在以二進制模式打開的文件中。

如果否,那麼您必須將密鑰的大小存儲在文件中然後存儲關鍵數據。

+0

你還沒有回答OP問的問題:'但是它如何安全地完成?'。 – jweyrich