VB.NET加密算法基礎概念解析
對于一款編程語言來說,評價其功能的好壞,其中一個最重要的因素就是在安全性方面的評估。VB.NET語言的安全性是比較全面的。我們可以通過對VB.NET加密算法的一些基本概念對其進行一個詳細的了解。#t#
加密將防止數據被查看或修改,并在原本不安全的信道上提供安全的通信信道,它達到以下目的:
保密性:防止用戶的標識或數據被讀取。
數據完整性:防止數據被更改。
身份驗證:確保數據發自特定的一方。
VB.NET加密算法1、散列(HASH)函數
散列(HASH)函數H也稱哈希函數或雜湊函數等,是典型的多到一的函數,其輸入為一可變長x(可以足夠的長),輸出一固定長的串h(一般為128位、160位,比輸入的串短),該串h被稱為輸入x的Hash值(或稱消息摘要Message Digest、指紋、密碼校驗和或消息完整性校驗),計作h=H(x)。為防止傳輸和存儲的消息被有意或無意地篡改,采用散列函數對消息進行運算生成消息摘要,附在消息之后發出或與信息一起存儲,它在報文防偽中具有重要應用。
消息摘要采用一種單向散列算法將一個消息進行換算。在消息摘要算法中,文件數據作為單向散列運算的輸入,這個輸入通過HASH函數產生一個散列值。如果改動了文件,散列值就會相應地改變,接收者即能檢測到這種改動過的痕跡。從理論上來講,攻擊者不可能制造一個替用的消息來產生一個完全相同的消息摘要。Hash函數可用于數字簽名、消息的完整性檢測、消息的起源認證檢測等。
散列函數是安全的是指它具有:
一致性:相同的輸入產生相同的輸出。
隨機性:消息摘要外觀是隨機的,以防被猜出源消息。
唯一性:幾乎不可能找到兩個消息產生相同的消息摘要。
單向性:即如果給出輸出,則很難確定出輸入消息。
Hash函數H一般滿足以下幾個基本要求:
(1)輸入x可以為任意長度;輸出數據串長度固定;
(2)正向計算容易,即給定任何x,容易算出H(x);反向計算困難,即給出一Hash值h,很難找出一特定輸入x,使h=H(x);
(3)抗沖突性(抗碰撞性),包括兩個含義,一是給出一消息x,找出一消息y使H(x)=H(y)是計算上不可行的(弱抗沖突),二是找出任意兩條消息x、y,使H(x)=H(y)也是計算上不可行的(強抗沖突)。
VB.NET加密算法2、私鑰加密
私鑰加密又稱為對稱加密,因為同一密鑰既用于加密又用于解密。私鑰加密算法非常快(與公鑰算法相比),特別適用于對較大的數據流執行加密轉換。
VB.NET加密算法3、公鑰加密(PKCS)和數字簽名
公鑰加密使用一個必須對未經授權的用戶保密的私鑰和一個可以對任何人公開的公鑰。用公鑰加密的數據只能用私鑰解密,而用私鑰簽名的數據只能用公鑰驗證。公鑰可以被任何人使用;該密鑰用于加密要發送到私鑰持有者的數據。兩個密鑰對于通信會話都是唯一的。公鑰加密算法也稱為不對稱算法,原因是需要用一個密鑰加密數據而需要用另一個密鑰來解密數據。