私鑰算法(塊密碼)
基本信息:私鑰加密算法使用單個私鑰來加密和解密數據,私鑰加密又稱爲[對稱加密],由於同一密鑰既用於加密 又用於解密。
安全相關:因爲具備密鑰的任意一方均可以使用該密鑰解密數據,所以必須保護密鑰不被未經受權的代理獲得。
一般用於:私鑰加密算法很是快(與公鑰算法相比),特別適用於對較大的數據流執行加密轉換。
私鑰算法(稱爲塊密碼)用於一次加密一個數據塊。塊密碼(如 RC二、DES、TripleDES 和 Rijndael)經過加密將 n 字節的輸 入塊轉換爲加密字節的輸出塊。
若是要加密或解密字節序列,必須逐塊進行。因爲 n 很小(對於 RC二、DES 和 TripleDES,n = 8 字節;n = 16 [默認值];n = 24;對於Rijndael,n = 32),所以必須對大於 n 的數據值一次加密一個塊。 安全
[基類庫]中提供的[塊密碼類]使用稱做[密碼塊鏈(CBC)的鏈模式]
密碼塊鏈(CBC)的鏈模式:使用[一個密鑰]和一個[初始化向量 (IV)]對數據執行加密轉換
緣由:對於給定的私鑰k,一個不使用初始化向量的簡單塊密碼將把相同的明文輸入塊加密爲一樣的密文輸出塊, 若是在明文流中有重複的塊,那麼在密文流中將存在重複的塊。
若是未經受權的 用戶知道有關明文塊的結構的任何信息,就可使用這些信息解密已知的密文塊並有可能 發現您的密鑰。
若要克服這個問題,可將上一個塊中的信息混合到加密下一個塊的過程當中,這樣,兩個相同的明文塊的輸出 就會不一樣。
因爲該技術使用上一個塊加密下一個塊,所以使用了一個 IV 來加密數據的第一個塊。
使用該系統,未經受權的用戶有可能知道的公共消息標頭將沒法用於對密鑰進行反向工程。 ide
風險:能夠危及用此類型密碼加密的數據的一個方法是,對每一個可能的密鑰執行[窮舉搜索]。
根據用於執行加密的密鑰大小,即便使用最快的計算機執行這種搜索,也極其耗時,所以難以實施。
使用較大的密鑰大小將使解密更加困難。雖然從理論上說加密不會使對手沒法檢索加密的數據,但這確實 極大增長了這樣作的成本。
若是執行完全搜索來檢索只在幾天內有意義的數據須要花費三個月的時間,那麼窮舉搜索的方法是不實用 的。
私鑰加密的缺點是它假定雙方已就[密鑰]和[IV]達成協議,而且互相傳達了[密鑰]和[IV]的值。可是,密 鑰必須對未經受權的用戶保密。
因爲存在這些問題,私鑰加密一般與公鑰加密一塊兒使用,來祕密地傳達[密鑰]和[IV]的值。
加密
TripleDESCryptoServiceProvider spa
可在MSDN中查看具體使用狀況 代理