加解密演算法

2021-08-20 13:56:05 字數 2418 閱讀 8027

演算法型別

特點優勢

缺陷代表演算法

非對稱加密

加解密金鑰不相關

無需提前共享金鑰

計算效率低,仍存在中間人攻擊可能

rsa、elgamal、橢 圓曲線系列演算法

對稱加密

加解密金鑰相同或可推算

計算效率高,加密強度高

需提前共享金鑰;易洩露 

des、3des、 aes、idea

對稱加密(symmetric cryptography),又稱私鑰加密

對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的金鑰(secret key),這種方法在密碼學中叫做對稱加密演算法。

對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。對稱加密通常使用的是相對較小的金鑰,一般小於256 bit。

因為金鑰越大,加密越強,但加密與解密的過程越慢。

如果你只用1 bit來做這個金鑰,那黑客們可以先試著用0來解密,不行的話就再用1解;

但如果你的金鑰有1 mb大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。

金鑰的大小既要照顧到安全性,也要照顧到效率,是乙個trade-off。

非對稱加密(asymmetric cryptography),又稱公鑰加密

2023年,美國學者dime和henman為解決資訊公開傳送和金鑰管理問題,提出一種新的金鑰交換協議,

允許在不安全的**上的通訊雙方交換資訊,安全地達成一致的金鑰,這就是「公開金鑰系統」。

相對於「對稱加密演算法」這種方法也叫做「非對稱加密演算法」。

非對稱加密為資料的加密與解密提供了乙個非常安全的方法,它使用了一對金鑰,公鑰(public key)和私鑰(private key)。

私鑰只能由一方安全保管,不能外洩,而公鑰則可以發給任何請求它的人。

非對稱加密使用這對金鑰中的乙個進行加密,而解密則需要另乙個金鑰。

比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對訊息加密,那麼只有私鑰的持有人–銀行才能對你的訊息解密。

與對稱加密不同的是,銀行不需要將私鑰通過網路傳送出去,因此安全性大大提高。

混合加密機制

即先用計算複雜度高的非對稱加密協商乙個臨時的對稱加密金鑰(會話金鑰,一般相對內容 來說要短的多),

然後雙方再通過對稱加密對傳遞的大量資料進行加解密處理。

典型的場景是現在大家常用的 https 機制。https 實際上是利用了 transport layer security/secure socket layer(tls/ssl)來實現可靠的傳輸。

tls 為 ssl 的公升級版本,目 前廣泛應用的為 tls 1.0,對應到 ssl 3.1 版本。

建立安全連線的具體步驟如下:

客戶端瀏覽器傳送資訊到伺服器,包括隨機數 r1,支援的加密演算法型別、協議版本、壓 縮演算法等。注意該過程為明文。

服務端返回資訊,包括隨機數 r2、選定加密演算法型別、協議版本,以及伺服器證書。注 意該過程為明文。

瀏覽器檢查帶有該**公鑰的證書。該證書需要由第三方 ca 來簽發,瀏覽器和作業系統 會預置權威 ca 的根證書。如果證書被篡改作假(中間人攻擊),很容易通過 ca 的證書 驗證出來。

如果證書沒問題,則用證書中公鑰加密隨機數 r3,傳送給伺服器。此時,只有客戶端和 伺服器都擁有 r1、r2 和 r3 資訊,基於 r1、r2 和 r3,生成對稱的會話金鑰(如 aes 演算法)。後續通訊都通過對稱加密進行保護。

非對稱加密:傳遞公鑰,用公鑰加密,用私鑰解密。

非對稱金鑰加密的使用過程:

1. a要向b傳送資訊,a和b都要產生一對用於加密和解密的公鑰和私鑰。

2. a的私鑰保密,a的公鑰告訴b;b的私鑰保密,b的公鑰告訴a。

3. a要給b傳送資訊時,a用b的公鑰加密資訊,因為a知道b的公鑰。

4. a將這個訊息發給b(已經用b的公鑰加密訊息)。

5. b收到這個訊息後,b用自己的私鑰解密a的訊息,其他所有收到這個報文的人都無法解密,因為只有b才有b的私鑰。

6. 反過來,b向a傳送訊息也是一樣。

混合加密機制:先用非對稱加密傳遞對稱加密的金鑰,然後再用對稱加密傳遞資訊。

解決的辦法是將對稱加密的金鑰使用非對稱加密的公鑰進行加密,然後傳送出去,接收方使用私鑰進行解密得到對稱加密的金鑰,然後雙方可以使用對稱加密來進行溝通。

轉至元資料結尾

轉至元資料起始

aes為分組密碼,分組密碼也就是把明文分成一組一組的,每組長度相等,每次加密一組資料,直到加密完整個明文。

在aes標準規範中,分組長度只能是128位,也就是說,每個分組為16個位元組(每個位元組8位)。

金鑰的長度可以使用128位、192位或256位。金鑰的長度不同,推薦加密輪數也不同。

詳細參見:

rsa加密演算法是現在世界上運用最廣泛的非對稱加密演算法,比如常用的https協議、銀行交易等等。

詳細參見:

加解密演算法

工作中經常用到加解密演算法大概有以下三種 由不定長的資料轉化為固定長的字串,代表有 sha1 str raw out false 演算法不夠複雜raw out預設為false,生成乙個32位的加密串 如果為true,則生成乙個16位的二進位製流 md5 str strict false strict...

加解密演算法一 雜湊演算法 對稱加解密

net中的加解密操作所涉及的物件都在命名空間system.security.cryptography下,所以應先在程式中新增using system.security.cryptography。用來產生一些資料片段 例如訊息或會話項 的雜湊值的演算法。好的雜湊演算法具有在輸入資料中的更改可以更改結果...

metin C 加解密演算法

typedef unsigned long dword typedef unsigned char byte 加解密常量 const dword c dwconst 0x61c88647 void yt code byte pdst,byte psrc,int nsrclen void yt enc...