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