2014-02-10 110 views
0

我使用這個QA提出的解決方案:https://stackoverflow.com/a/2791259/2713516什麼用於加密密鑰和存儲位置?

但是,我看到有些人在存儲的代碼作爲一個字段的鍵(隨機「密碼」),但我想知道如果這實際上是一個好主意。 該解決方案中使用的鹽也是該課程的一個領域。

一些建議使用用戶密碼,但因爲這可以改變我不認爲這是一個好主意。

所以我的問題是。 是否將鹽存儲在類中,就像上述解決方案中提供的字段一樣好? 我應該如何使用加密/解密密鑰? (爲所有用戶提供一些隨機密鑰)? 我應該在哪裏存儲這個密鑰?在課堂上作爲一個領域?在數據庫中?

謝謝!

回答

1

個人而言,我會將密鑰存儲在應用程序的配置文件中。 可以是app.config文件或web.config文件(取決於它是桌面還是Web應用程序)。

<add key="EncryptionKey" value="MY_KEY" /> 

我會使用一些隨機字符串生成器來生成密鑰。

您是否期望經常更換密鑰?

此外 - 爲了web.config的生產轉換,我建議將加密密鑰從SCM解決方案(GIT,SVN等)中取出。我把所有的我們都保存在一個單獨的KeyPass數據庫中。

+0

這不就像將其存儲在代碼中一樣「安全」(或不安全)嗎?代碼更容易IMO。我不明白爲什麼我會隨時更換鑰匙。 – user2713516

+1

將其存儲在代碼中意味着任何與您一起處理代碼的人都會知道加密密鑰是什麼。通過將其移出配置,您可以將其從其他可能正在處理該項目的開發人員中隱藏,但不需要訪問生產加密密鑰。它還使您可以更輕鬆地在不同的環境中使用不同的密鑰,或者在您認爲可能以某種方式遭到破壞時更改密鑰。 –

+0

有效的參數。 – user2713516