.net中的加密概述

 基於.net框架開發功能強大的應用程序的同時也要充分考慮應用程序的安全性,而實現這些安全性常常需要用到各種加密算法。加密通過防止數據被查看或修改,並在原本不安全的信道上提供安全的通信信道。例如,可以使用加密算法對數據進行加密,在加密狀態下傳輸數據,然後由預定的接收方對數據進行解密。如果第三方截獲了加密的數據,將難以解密該數據。

加密用於達到以下目的:
  1. 保密性:防止用戶的標識或數據被讀取。
  2. 數據完整性:防止數據被更改。
  3. 身份驗證:確保數據發自特定的一方

一.私鑰加密(對稱加密):對數據執行轉換,使第三方無法讀取該數據。此類型的加密使用單個共享的機密密鑰來加密和解密數據。

特點:使用單個私鑰來加密和解密數據;具有密鑰的任意一方都可以使用該密鑰解密數據;私鑰加密算法非常快(與公鑰算法相比),特別適用於對較大的數據流執行加密轉換。

缺點:私鑰加密的缺點是它假定雙方已就密鑰和 IV 達成協議,並且互相傳達了密鑰和 初始化向量 IV 的值。並且,密鑰必須對未經授權的用戶保密。由於存在這些問題,私鑰加密通常與公鑰加密一起使用,來祕密地傳達密鑰和 IV 的值。

用途:通常用於加密對方所需的實際數據。

     .NET Framework 下實現私鑰加密算法的類:

1) DESCryptoServiceProvider
2) RC2CryptoServiceProvider
3) RijndaelManaged
4) TripleDESCryptoServiceProvider

二.公鑰加密(不對稱加密):對數據執行轉換,使第三方無法讀取該數據。此類加密使用公鑰/私鑰對來加密和解密數據。

特點:公鑰加密具有更大的密鑰空間,不容易受到對每個可能密鑰都進行窮舉攻擊的影響;對所有人公開,易於分發;

缺點:公鑰算法非常緩慢(與私鑰算法相比),不適合用來加密大量數據。

用途:通常用於加密一個私鑰算法將要使用的密鑰和 初始向量IV。

 .NET Framework下實現公鑰加密算法的類:

1)DSACryptoServiceProvider
2)RSACryptoServiceProvider

三. 加密簽名:通過創建對特定的一方唯一的數字簽名來確保數據發自該特定方。此過程還使用哈希函數。

使用公鑰加密同樣可以對消息進行數字簽名。甲方使用哈希算法創建消息的摘要。該消息摘要是數據的唯一表示形式。然後,甲方使用自己的私鑰萊加密消息摘要用於創建自己的個人簽名。在收到該消息和簽名時,乙方使用甲方的公鑰解密簽名從而恢復該消息摘要,接着使用與甲方所使用的相同的哈希算法來散列該消息。如果乙方計算的消息摘要與從甲方那裏收到的消息摘要完全一致,乙方就可以確定該消息來自私鑰的持有人,並且數據未被修改過。如果乙方相信甲方是私鑰的持有人,則他知道該消息來自甲方。

缺點:發送方的公鑰向所有人公開,並且通常包含在數字簽名格式中,因此所有的人都可以驗證簽名,缺乏對消息的機密性的保護。

用途:數字簽名驗證發送方的標識(確定消息是否由對方發出)並保護數據的完整性。

 .NET Framework 下實現數字簽名算法的類:

DSACryptoServiceProvider
RSACryptoServiceProvider

四.加密哈希:將數據從任意長度映射爲定長字節序列。哈希在統計上是唯一的;不同的雙字節序列不會哈希爲同一個值。

 .NET Framework 下實現數字簽名算法的類:

HMACSHA1
MACTripleDES
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
SHA384Managed
SHA512Managed

特點:要找到散列爲同一個值的兩個不同的輸入,在計算上是不可能的。 

用途:消息身份驗證代碼 (MAC) 哈希函數通常與數字簽名一起用於對數據進行簽名,以確保數據的完整性。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章