對稱加密演算法和非對稱加密演算法的區別是什麼

時間 2021-10-14 21:29:16

1樓:

(一)對稱加密(symmetric cryptography)

對稱加密是最快速、最簡單的一種加密方式,加密(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)。.net中包含了rijndael演算法,類名叫rijndaelmanaged,下面舉個例子。

加密過程:

private string mydata = "hello";

private string mypassword = "opensesame";

private byte ciphertext;

private byte salt = ;

private void mnusymmetricencryption_click(object sender, routedeventargs e)

messagebox.show(string.format("data:

encrypted and encoded:", mydata, environment.newline, convert.

tobase64string(ciphertext)));

}private void movebytes(stream source, stream dest)

}解密過程:

private void mnusymmetricdecryption_click(object sender, routedeventargs e)

var key = new rfc2898derivebytes(mypassword, salt);

// try to decrypt, thus showing it can be round-tripped.

var algorithm = new rijndaelmanaged();

algorithm.key = key.getbytes(16);

algorithm.iv = key.getbytes(16);

using (var sourcestream = new memorystream(ciphertext))

using (var destinationstream = new memorystream())

using (var crypto = new cryptostream(sourcestream, algorithm.createdecryptor(), cryptostreammode.read))

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

(二)非對稱加密(asymmetric cryptography)

2023年,美國學者dime和henman為解決資訊公開傳送和金鑰管理問題,提出一種新的金鑰交換協議,允許在不安全的**上的通訊雙方交換資訊,安全地達成一致的金鑰,這就是“公開金鑰系統”。相對於“對稱加密演算法”這種方法也叫做“非對稱加密演算法”。

非對稱加密為資料的加密與解密提供了一個非常安全的方法,它使用了一對金鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外洩,而公鑰則可以發給任何請求它的人。非對稱加密使用這對金鑰中的一個進行加密,而解密則需要另一個金鑰。

比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對訊息加密,那麼只有私鑰的持有人--銀行才能對你的訊息解密。與對稱加密不同的是,銀行不需要將私鑰通過網路傳送出去,因此安全性大大提高。

目前最常用的非對稱加密演算法是rsa演算法,是rivest, shamir, 和adleman於2023年發明,他們那時都是在mit。.net中也有rsa演算法,請看下面的例子:

加密過程:

private byte rsaciphertext;

private void mnuasymmetricencryption_click(object sender, routedeventargs e)

encrypted and encoded: ",

mydata, environment.newline,

convert.tobase64string(rsaciphertext)));

}解密過程:

private void mnuasymmetricdecryption_click(object sender, routedeventargs e)

var rsa = 1;

// decrypt the data.

var cspparms = new cspparameters(rsa);

cspparms.flags = cspproviderflags.usemachinekeystore;

cspparms.keycontainername = "my keys";

var algorithm = new rsacryptoserviceprovider(cspparms);

var unencrypted = algorithm.decrypt(rsaciphertext, true);

messagebox.show(new unicodeencoding().getstring(unencrypted));

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

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

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

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

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

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

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

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

(三)總結

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

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

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

電腦上可以試一下超級加密3000.具有檔案加密、資料夾加密、資料粉碎、徹底隱藏硬碟分割槽、禁止或只讀使用usb儲存裝置等功能。加密速度塊!

並且還有防複製防移動防刪除的功能。每次使用加密資料夾或加密檔案後不用再重新加密。而且使用也非常方便,安裝軟體後直接對需要加密的資料夾右擊,選擇超級加密或資料夾保護就可以了。

2樓:阮妮頻熙

對稱演算法加解密速度快,金鑰對第3方保密,金鑰分發是個問題;

非對稱演算法,金鑰成對生成,公鑰對外發布,但是對大資料的加解密速度比對稱演算法慢.

非對稱加密和對稱加密的區別

3樓:匿名使用者

在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體回介紹如答下:

1、加密和解密過程不同

對稱加密過程和解密過程使用的同一個金鑰,加密過程相當於用原文+金鑰可以傳輸出密文,同時解密過程用密文-金鑰可以推匯出原文。但非對稱加密採用了兩個金鑰,一般使用公鑰進行加密,使用私鑰進行解密。

2、加密解密速度不同

對稱加密解密的速度比較快,適合資料比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量資料的使用。

3、傳輸的安全性不同

對稱加密的過程中無法確保金鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼資訊將被第三方破獲,安全性相對較低。

非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推匯出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推匯出私鑰。所以安全性較高。

4樓:匿名使用者

1、加密演算法

不同在非對稱加密中使用的主要演算法有:

內rsa、容elgamal、揹包演算法、rabin、d-h、ecc(橢圓曲線加密演算法)等。

在對稱加密中使用的主要演算法有:des(data encryption standard)、3des(triple des)、aes(advanced encryption standard)、blowfish等。

2、加密安全性不同

對稱加密的通訊雙方使用相同的祕鑰,如果一方的祕鑰遭洩露,那麼整個通訊就會被破解。

而非對稱加密使用一對祕鑰,一個用來加密,一個用來解密,而且公鑰是公開的,祕鑰是自己儲存的,不需要像對稱加密那樣在通訊之前要先同步祕鑰。非對稱加密與,其安全性更好。

4、流程圖不同

非對稱加密流程圖:

對稱加密流程圖:

4、加密耗時不同

非對稱加密使用一對祕鑰,一個用來加密,一個用來解密,這樣加密和解密花費時間就會更長長。

對稱加密中加密方和解密方使用同一個金鑰,加密解密的速度比較快,耗時短,適合資料比較長時的使用。

Delphi加密演算法

我用的加密解密 function encryptstring source,key string string 對字串加密 source 源 key 密匙 varkeylen integer keypos integer offset integer dest string srcpos integ...

在密碼學中,常見的對稱加密演算法有哪些 各有什麼特點

她是我的小太陽 常見的對稱加密演算法有 des 金鑰短,使用時間長,硬體計算快於軟體。idea 個人使用不受專利限制,可抵抗差分攻擊,基於三個群。aes 可變金鑰長,可變分組長。以上三個屬於塊式,明文按分組加密。rc4 流式加密,不需填充明文,金鑰長度可變。 des 金鑰短 使用時間長 硬體計算快於...

誰幫我介紹下加密對稱演算法,常用的對稱加密演算法有哪些?

轉運貝貝 對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文 原始資料 和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復...