對稱加密是最快速、最簡單的一種加密方式,加密(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。因為金鑰越大,加密越強...