常見加解密方法 轉

2021-09-07 10:35:10 字數 2937 閱讀 9273

**:常用加密解密方法

常見用於保證安全的加密或編碼演算法如下:

金鑰演算法用來對敏感資料、摘要、簽名等資訊進行加密,常用的金鑰演算法包括:

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 非對稱加密演算法 一.單向加密演算法 這種演算法,只能加密,不能解密,是不可逆的,所以叫做單向加密演算法 摘要演算法 這種演算法通常被用作對資料簽名 1.md5 摘要演算法是乙個不可逆過程,無論多大資料,...

加解密方法

imports system imports system.security.cryptography imports system.text imports system.io public class encryptor private shared iv as byte private sha...

常見加密方法解析 python加解密應用

加密就是把明文通過處理變成密文 解密就是把密文解析成明文 加密的操作物件是 位元組碼,也就是bytes型別 所以對字串進行加密時,必須先將 str 轉換成 bytes 型別 轉換方法 encode 將 str 轉換成 bytes decode 將 bytes 轉換成 str計算機的儲存單位 byte...