2009-02-19 136 views
0

我有一個從app.config中讀取的Windows服務。加密配置文件進行部署

我想要加密一些設置,但是,我不想使用.NET中提供的ProtectedConfigurationProvider類,因爲它們基於使用DPAPI正在運行的計算機加密文件。

我想要的東西對我們的管理員部署已經加密到多臺機器的配置文件,並在需要的時候每臺機器對其進行解密的方式。

我不想硬編碼密碼到組件要麼所以我不知道我怎麼能去這件事。

+5

誰是文斯,他爲什麼問這個問題呢? http://stackoverflow.com/questions/559995/encrypting-config-files-for-deployment-net – spender 2010-10-03 01:47:05

回答

8

減少的問題,以最簡單的形式:

  • 你有一個程序
  • 將給予加密文件
  • ,並要解密文件
  • 沒有硬編碼鍵

顯而易見的解決辦法是在需要時向可信第三方索要密鑰

+1

受信任的第三方不一定是用戶。可能是 – 2009-02-19 05:08:47

2

一種可能的方式做到這一點應該包含在文件開頭的解密密鑰,並且密鑰已經以某種方式,你可以從按鍵確定了後處理。一種可能性就是選擇16個不同的東西,例如0表示將前兩個字節旋轉到結尾; 1將最後兩個字節旋轉到前面; 2將每個字節加1;等等14個附加功能。現在將該值添加到密鑰前面作爲「重新處理標誌」。然後

關鍵的第一個字節將是一個分支表的16個不同的程序之一,說什麼與關鍵做。請注意,重新處理標誌不必是第一個字節,只要記得在處理密鑰時丟棄該字節,它就可以是密鑰中的任何字節。

然後你根據什麼解密算法,你會使用過程中的關鍵。

現在,鑑於此重新處理標誌 - 特別是如果整個鍵是十六進制 - 需要有人跟蹤,以確定你的代碼執行的16種不同的功能,這,然後找出解密方法的邏輯。它不會阻止每個人,但它可能會做一個相當不錯的工作,但最堅決的一切都會驅散。

+1

這種認證服務器,它仍然在技術上對關鍵字進行硬編碼,只是在配置文件中被模糊處理,而不是在代碼中存在 - 儘管如此,仍然需要+1! – 2009-02-19 02:54:26