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、加密耗時不同
非對稱加密使用一對祕鑰,一個用來加密,一個用來解密,這樣加密和解密花費時間就會更長長。
對稱加密中加密方和解密方使用同一個金鑰,加密解密的速度比較快,耗時短,適合資料比較長時的使用。
什麼是對稱加密演算法?請舉例,常用的對稱加密演算法有哪些?
對稱加密演算法是指 加密和解密都用同一個金鑰,常見的有 3des演算法,blowfish演算法,rc5演算法等 常用的對稱加密演算法有哪些?對稱加密演算法用來對敏感資料等資訊進行加密,常用的演算法包括 des data encryption standard 資料加密標準,速度較快,適用於加密大量資...
著名的可逆的加密演算法有哪些,常用的對稱加密演算法有哪些?
陳說教育 1,des data encryption standard 對稱演算法,資料加密標準,速度較快,適用於加密大量資料的場合。2,3des triple des 是基於des的對稱演算法,對一塊資料用三個不同的金鑰進行三次加密,強度更高。3,rc2和rc4 對稱演算法,用變長金鑰對大量資料進...
求下面的加密演算法
1全部參照xhaos1的答案,來解釋清楚 0c 16 00001100 0 00001100 反過來就是00110000 也就是十六進位制0x30 ascii 對應0 8c 16 10001100 1 4c 16 01001100 2 cc 16 11001100 3 2c 16 00101100 ...