2012-09-06 37 views
0

如果RSACryptoServiceProvider不能加密大於它的KeySize的數據,那麼在.Net框架中如何實現RsaProtectedConfigurationProviderRsaProtectedConfigurationProvider實現與RSACryptoServiceProvider c#

我對將要被用來加密實用程序工作/解密的一些敏感信息。我的兩個加密提供選項DPAPI和RSA,而DPAPI不​​適合網絡農場的環境,RSA是因爲有KeyContainer導出/導入選項配合。這是在工作站上運行的獨立應用程序。

正如我知道非對稱加密算法不是專爲大型數據,我只是想用下面的代碼超過400K加密長度的字符串,它工作得很好。

 if (!section.SectionInformation.IsProtected) 
     { 
      section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider"); 
      section.SectionInformation.ForceSave = true; 
      config.Save(ConfigurationSaveMode.Full); 
     } 

當然,這意味着除了aspnet_regiis.exe中的導出導入鍵選項之外,幕後會發生更多的事情。

我的理解:

  1. 我們加密myapp.exe.configRsaProtectedConfigurationProvider,提供密鑰容器名稱myrsakeycontainer,以及公共和私有密鑰導出到一個XML文件myrsakeyfile .xml

  2. 如果我們想myapp.exe.config到另一臺計算機被解密,我們進口他們從myrsakeyfile.xml密鑰對與一個名爲myrsakeycontainer容器。

這個效果很好。我可以通過RSACryptoServiceProvider在我的項目中實現同樣的目標。但我無法處理比對我產生 new RSACryptoServiceProvider(cspParameters) 關鍵尺寸數據。

  • 我希望能夠解密龐大的數據(以防萬一)現在的樣子 RsaProtectedConfigurationProvider一樣。
  • 是的我可以使用RijndaelManaged(我的最愛)實際的 加密和對稱密鑰傳輸(導出/導入)I 可以使用RSACryptoServiceProvider。這讓我在 局面。如果我要導出/導入的對稱密鑰,我應該先 與公共密鑰或RSA加密,將其導入到另一 機,與RSA的私鑰解密。這是導出RSA 密鑰對加密的對稱密鑰一起。
  • 但是,當我出口經由ASPNET_REGIIS.EXE RsaProtectedConfigurationProvider使用RSA密鑰對,我 認爲,出口僅公鑰/私鑰對在一個XML文件 ,沒有其他信息(如對稱密鑰信息) 。

  • 所以,只用RSA密鑰對,如何 RsaProtectedConfigurationProvider設法derypt(巨大的 - 在我的情況 400K字)信息在另一臺計算機 上加密? 在情況下,它採用了對稱算法(可能?!),以 加密信息,如何是對稱密鑰導出/導入到另一 計算機解密?是,RSA密鑰容器的對稱密鑰部分經由ASPNET_REGIIS.EXE出口或在對稱密鑰基於算法做作動態?

  • 我可以用一個Rijndael算法,其關鍵是encrypeted與RSA 密鑰對,我可以導出/導入兩個RSA密鑰對和 Rijndael算法對稱密鑰到另一臺計算機脫身。 (這是我在過去所做的那樣)

    我很有興趣知道里面是什麼 RsaProtectedConfigurationProvider使用。

任何理論?概念?鏈接?建議?請..

類似的問題 - What algorithms are used by RSAProtectedConfigurationProvider in web.config encyrption?

回答

1

加密對稱密鑰存儲在XML 旁邊加密的配置信息對稱密鑰加密了。

如果使用反射來看看代碼,它的作用是加載XML節點,並使用不對稱 RSA私鑰來解密存儲在XML節點本身內的對稱關鍵。

實際執行這種神奇的功能是在這裏:

公共虛擬SymmetricAlgorithm GetDecryptionKey(的EncryptedData的EncryptedData,串symmetricAlgorithmUri);

聲明類型:System.Security.Cryptography.Xml.EncryptedXml 大會:System.Security,版本= 2.0.0.0

看到代碼周圍

this.m_document.SelectNodes("//enc:EncryptedKey", nsmgr); 

本博客文章有一個很好的書面記錄你如何配對非對稱和對稱算法在現實世界的實踐:http://pages.infinit.net/ctech/20031101-0151.html

+0

只是我一直在尋找的答案。釘在腦袋!而且這個鏈接也是很好的一個。順便說一句,我是工作在礦上做SSIS包配置文件加密的一個項目,因爲它是非常有時限的,我最終獲得來自非對稱密鑰性質的對稱密鑰(如模數,指數..)。項目現場https://ssiscipherboy.codeplex.com。 _Public虛擬SymmetricAlgorithm GetDecryptionKey(的EncryptedData的EncryptedData,串symmetricAlgorithmUri); _這一切有意義了。 – gmaran23

相關問題