資料加密演算法
加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的:
保密性:防止使用者的標識或資料被讀取。
資料完整性:防止資料被更改。
身份驗證:確保資料發自特定的一方。
一、資料加密/編碼演算法列表
常見用於保證安全的加密或編碼演算法如下:
1、常用金鑰演算法
金鑰演算法用來對敏感資料、摘要、簽名等資訊進行加密,常用的金鑰演算法包括:
des(data encryption standard):資料加密標準,速度較快,適用於加密大量資料的場合;
3des(triple des):是基於des,對一塊資料用三個不同的金鑰進行三次加密,強度更高;
rc2和 rc4:用變長金鑰對大量資料進行加密,比 des 快;
idea(international data encryption algorithm)國際資料加密演算法,使用 128 位金鑰提供非常強的安全性;
rsa:由 rsa 公司發明,是乙個支援變長金鑰的公共金鑰演算法,需要加密的檔案快的長度也是可變的;
dsa(digital signature algorithm):數字簽名演算法,是一種標準的 dss(數字簽名標準);
aes(advanced encryption standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高,目前 aes 標準的乙個實現是 rijndael 演算法;
blowfish,它使用變長的金鑰,長度可達448位,執行速度很快;
其它演算法,如elgamal、deffie-hellman、新型橢圓曲線演算法ecc等。
2、單向雜湊演算法
單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有:
md5(message digest algorithm 5):是rsa資料安全公司開發的一種單向雜湊演算法,md5被廣泛使用,可以用來把不同長度的資料塊進行暗碼運算成乙個128位的數值;
sha(secure hash algorithm)這是一種較新的雜湊演算法,可以對任意長度的資料運算生成乙個160位的數值;
mac(message authentication code):訊息認證**,是一種使用金鑰的單向函式,可以用它們在系統上或使用者之間認證檔案或訊息。hmac(用於訊息認證的金鑰雜湊法)就是這種函式的乙個例子。
crc(cyclic redundancy check):迴圈冗餘校驗碼,crc校驗由於實現簡單,檢錯能力強,被廣泛使用在各種資料校驗應用中。占用系統資源少,用軟硬體均能實現,是進行資料傳輸差錯檢測地一種很好的手段(crc 並不是嚴格意義上的雜湊演算法,但它的作用與雜湊演算法大致相同,所以歸於此類)。
3、其它資料演算法
其它資料演算法包括一些常用編碼演算法及其與明文(ascii、unicode 等)轉換等,如 base 64、quoted printable、ebcdic 等。
二、演算法的 .net 實現
常見的加密和編碼演算法都已經在 .net framework中得到了實現,為編碼人員提供了極大的便利性,實現這些演算法的命名空間是:system.security.cryptography。
system.security.cryptography 命名空間提供加密服務,包括安全的資料編碼和解碼,以及許多其他操作,例如雜湊法、隨機數字生成和訊息身份驗證。
system.security.cryptography 是按如下方式組織的:
1、私鑰加密
私鑰加密又稱為對稱加密,因為同一金鑰既用於加密又用於解密。私鑰加密演算法非常快(與公鑰演算法相比),特別適用於對較大的資料流執行加密轉換。
.net framework 提供以下實現私鑰加密演算法的類:
des:descryptoserviceprovider
rc2:rc2cryptoserviceprovider
rijndael(aes):rijndaelmanaged
3des:tripledescryptoserviceprovider
2、公鑰加密和數字簽名
公鑰加密使用乙個必須對未經授權的使用者保密的私鑰和乙個可以對任何人公開的公鑰。用公鑰加密的資料只能用私鑰解密,而用私鑰簽名的資料只能用公鑰驗證。公鑰可以被任何人使用;該金鑰用於加密要傳送到私鑰持有者的資料。兩個金鑰對於通訊會話都是唯一的。公鑰加密演算法也稱為不對稱演算法,原因是需要用乙個金鑰加密資料而需要用另乙個金鑰來解密資料。
.net framework 提供以下實現公鑰加密演算法的類:
dsa:dsacryptoserviceprovider
rsa:rsacryptoserviceprovider
3、雜湊(hash)值
雜湊演算法將任意長度的二進位制值對映為固定長度的較小二進位制值,這個小的二進位制值稱為雜湊值。雜湊值是一段資料唯一且極其緊湊的數值表示形式。如果雜湊一段明文而且哪怕只更改該段落的乙個字母,隨後的雜湊都將產生不同的值。要找到雜湊為同乙個值的兩個不同的輸入,在計算上是不可能的,所以資料的雜湊值可以檢驗資料的完整性。
.net framework 提供以下實現數字簽名演算法的類:
hmac:hmacsha1 (hmac 為一種使用金鑰的 hash 演算法)
mac:mactripledes
md5:md5cryptoserviceprovider
sha1:sha1managed、sha256managed、sha384managed、sha512managed
4、隨機數生成
加密金鑰需要盡可能地隨機,以便使生成的金鑰很難再現,所以隨機數生成是許多加密操作不可分割的組成部分。
在 .net framework 中,rngcryptoserviceprovider 是隨機數生成器演算法的實現,對於資料演算法,.net framework 則在其它命名空間中實現,如 convert 類實現 base 64 編碼,system.text 來實現編碼方式的轉換等。
從以上來看,.net framework 對於資料加密/編碼還是支援比較好,大大地方便了開發人員,但美中不足的是,.net framework 中的資料加密演算法仍然不夠完全,如 idea、blowfish、其它演算法,如elgamal、deffie-hellman、ecc 等,對於一些其它的資料校驗演算法支援也不夠,如 crc、sfv 等,開發人員只能去從早期**做移植或者尋找第三方廠商的實現。
資料加密演算法
1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有 3 其它資料演算法 其它資料演算法包括一些常用編碼演算法及其與明文 ascii unicode 等 轉換等,如base 64 qu...
資料加密演算法
加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的 一 資料加密 編碼演算法列表 常見用於保證安全的加密或編碼演算法如下 1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘...
IDEA資料加密演算法介紹
idea 資料加密演算法及實現 idea 對稱資料加密演算法,是我 2000 年剛畢業,工作需要進行資料加密時,學習 實現的第乙個標準資料加密演算法,並且此後就深深地迷上了資料加密這個方面,以後連續兩年潛心學習和研究這方面的知識與技術。在此過程中,非常感謝同事李哥對我的大力幫助,並從此成了很好的朋友...