對稱加密與非對稱加密

2021-09-08 13:46:21 字數 2871 閱讀 2844

對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的金鑰(secret key)。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。

對稱加密通常使用的是相對較小的金鑰,一般小於256 bit。因為金鑰越大,加密越強,但加密與解密的過程越慢。如果你只用1 bit來做這個金鑰,那黑客們可以先試著用0來解密,不行的話就再用1解;但如果你的金鑰有1 mb大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。金鑰的大小既要照顧到安全性,也要照顧到效率,是乙個trade-off。

2023年10月2日,美國國家標準與技術研究所(nist--american national institute of standards and technology)選擇了rijndael演算法作為新的高階加密標準(aes--advanced encryption standard)。

常用的對稱加密演算法,des演算法,3des演算法,tdea演算法,blowfish演算法,rc5演算法,idea演算法,aes演算法。

aes加密可以用在配置檔案的密碼加密

下面以aes演算法進行加密解密舉例。

/**

* 加密

* @param

content 需要加密的內容

* @param

password 加密密碼

* @return

*/public

static

byte

encrypt(string content, string password) catch

(nosuchalgorithmexception e)

catch

(nosuchpaddingexception e)

catch

(invalidkeyexception e)

catch

(unsupportedencodingexception e)

catch

(illegalblocksizeexception e)

catch

(badpaddingexception e)

return

null

; }

/**解密

* @param

content 待解密內容

* @param

password 解密金鑰

* @return

*/public

static

byte decrypt(byte

content, string password) catch

(nosuchalgorithmexception e)

catch

(nosuchpaddingexception e)

catch

(invalidkeyexception e)

catch

(illegalblocksizeexception e)

catch

(badpaddingexception e)

return

null

; }

對稱加密的一大缺點是金鑰的管理與分配,換句話說,如何把金鑰傳送到需要解密你的訊息的人的手裡是乙個問題。在傳送金鑰的過程中,金鑰有很大的風險會被黑客們攔截。現實中通常的做法是將對稱加密的金鑰進行非對稱加密,然後傳送給需要它的人。

非對稱加密為資料的加密與解密提供了乙個非常安全的方法,它使用了一對金鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外洩,而公鑰則可以發給任何請求它的人。非對稱加密使用這對金鑰中的乙個進行加密,而解密則需要另乙個金鑰。比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對訊息加密,那麼只有私鑰的持有人--銀行才能對你的訊息解密。與對稱加密不同的是,銀行不需要將私鑰通過網路傳送出去,因此安全性大大提高。

非對稱加密演算法:rsa、elgamal、揹包演算法、rabin、d-h、ecc。

目前最常用的非對稱加密演算法是rsa演算法,是rivest, shamir, 和adleman於2023年發明,他們那時都是在mit。

雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送訊息,但對稱加密所使用的金鑰我們可以通過非對稱加密的方式傳送出去。為了解釋這個過程,請看下面的例子:

(1) alice需要在銀行的**做一筆交易,她的瀏覽器首先生成了乙個隨機數作為對稱金鑰。

(2) alice的瀏覽器向銀行的**請求公鑰。

(3) 銀行將公鑰傳送給alice。

(4) alice的瀏覽器使用銀行的公鑰將自己的對稱金鑰加密。

(5) alice的瀏覽器將加密後的對稱金鑰傳送給銀行。

(6) 銀行使用私鑰解密得到alice瀏覽器的對稱金鑰。

(7) alice與銀行可以使用對稱金鑰來對溝通的內容進行加密與解密了。

md2、md4、md5(一般用於密碼加密) 和 sha-1(目的是將任意長輸入通過演算法變為固定長輸出,且保證輸入變化一點輸出都不同,且不能反向解密)

base64(一般用於token傳輸加密解密)不是加密演算法,是一種編碼方式,由於加密後都是byte,為了可讀性,一般將byte轉為base64編碼

(1) 對稱加密加密與解密使用的是同樣的金鑰,所以速度快,但由於需要將金鑰在網路傳輸,所以安全性不高。

(2) 非對稱加密使用了一對金鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。

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

對稱加密與非對稱加密

概述目前存在兩種加密方法 一種是對稱加密 另稱私鑰加密 一種是不對稱加密 另稱公鑰加密 對稱加密 對稱加密是一種最古老也最有名的加密技術。它對加密的內容應用乙個私鑰 可以是乙個數字,乙個單詞,或者是一隨機字串 按照一定的規則進行改變,從而達到加密的目的。一種簡單的情形是把每個字母在字母表中往前或往後...

對稱加密與非對稱加密

什麼是加密?加密分為演算法和秘鑰兩部分。演算法是不變的,秘鑰是變化的,看下面的例子。秘鑰 abcedfgh 12345678。演算法 明文中每一位都換成秘鑰表中的另乙個位。例如adfh經過加密後為1568。加密金鑰k和解密金鑰k 是一樣的則為對稱加密。對稱加密的優點 加密速度快。對稱加密的缺點 金鑰...

對稱加密與非對稱加密

對稱加密是最快速 最簡單的一種加密方式,加密 encryption 與解密 decryption 用的是同樣的金鑰 secret key 對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。對稱加密通常使用的是相對較小的金鑰,一般小於256 bit。因為金鑰越大,加密越強...