2011-09-20 19 views
0

我有一個系統每天接收約1500萬條記錄(在單獨的文件中每個文件都有大約150K條記錄)。系統會將這些文件從二進制文件轉換爲ASCII文件,然後將數據傳送到多個下游系統。 現在有一個新的要求,我們必須加密每個記錄中的一個字段(讓我們稱之爲字段A),字段A的長度總是在6到10個數字之間。.net快速和安全的加密方式與可打印的字符結果

1.應加密的方式,結果只會 包含可打印字符

2,性能是非常重要的在這裏

3,我們在每個記錄下哪些可以在其他領域做被用作像日期時間那樣的加密/解密密鑰,但不能保證這些其他字段是唯一的(這不應該是重要的)。其他下游系統應該能夠使用密鑰解碼結果(我對數據加密非常陌生,但我認爲這個密鑰稱爲私鑰)。

5.我讀過關於SALT的不同文章,您認爲SALTing可以在我們的場景中使用嗎?

您認爲在我這裏使用的最佳加密算法是什麼? .net框架提供了這種算法的實現嗎?

回答

2

您這裏有兩個問題:一個適當的加密算法爲您安全要求

  • 選擇。
  • 將結果表示爲可打印的字符串。

後者很簡單:使用Convert.ToBase64String(byte[])。我所知道的所有加密算法都適用於二進制數據,因此您需要先將輸入轉換爲二進制文件(例如,使用Encoding.UTF8.GetBytes(text)),然後進行加密,然後使用Convert.ToBase64String轉換回文本。解密是使用Convert.FromBase64String,然後應用解密二進制到二進制算法,然後逆轉原始轉換(例如Encoding.UTF8.GetString(binary))。

您沒有真正給出足夠的信息來確定您應該使用哪種加密算法 - 例如它應該是對稱還是非對稱的 - 但是salting通常涉及單向哈希,而不是可逆加密。儘管如此,在初始化向量方面的類似概念適用於幾種加密算法。

+0

:謝謝你的回答,我認爲對稱算法是我最好的選擇,因爲我們只有在e系統上進行加密。另一個原因是下游系統可能連接到sql服務器並收集加密記錄或將使用生成的文件,但無論如何我們不能爲每個系統創建單獨的記錄。謝謝 – Asha

0
  1. 加密的結果是二進制數據,所以您可以將數據轉換爲可打印的字符,例如使用base64。

  2. 加密速度不是很快,而且使加密更加安全的一個組件是使其更加複雜,以便蠻力攻擊的執行時間更長。所以基本上,你必須在性能和安全性之間進行選擇。但是,由於您加密的數據非常短,所以速度不應該太大。

  3. 您不應該使用記錄中包含的內容作爲關鍵字。密鑰應該單獨發送給接收方,這樣不容易。

  4. key exchange有不同的方法,您可以使用它來確保兩個部件都沒有其他人擁有正確的鑰匙。

  5. 也許,這取決於你使用什麼加密。

System.Security.Cryptography namespace中有加密算法可用,其中幾個可用於您的方案。

相關問題