對稱加密應用
❶ 試比較對稱加密演算法與非對稱加密演算法在應用中的優缺點傳統密碼體制與公鑰密碼體制的優缺點
1、對稱加密演算法
優點
加解密的高速度和使用長密鑰時的難破解性。
缺點
對稱加密演算法的安全性取決於加密密鑰的保存情況,但要求企業中每一個持有密鑰的人都保守秘密是不可能的,他們通常會有意無意的把密鑰泄漏出去。如果一個用戶使用的密鑰被入侵者所獲得,入侵者便可以讀取該用戶密鑰加密的所有文檔,如果整個企業共用一個加密密鑰,那整個企業文檔的保密性便無從談起。
2、非對稱加密演算法
優點
非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了。這樣安全性就大了很多。
缺點
演算法強度復雜、安全性依賴於演算法與密鑰但是由於其演算法復雜,而使得加密解密速度沒有對稱加密解密的速度快。
3、傳統密碼體制
優點
由於DES加密速度快,適合加密較長的報文。
缺點
通用密鑰密碼體制的加密密鑰和解密密鑰是通用的,即發送方和接收方使用同樣密鑰的密碼體制。
4、公鑰密碼體制
優點
RSA演算法的加密密鑰和加密演算法分開,使得密鑰分配更為方便。
RSA演算法解決了大量網路用戶密鑰管理的難題。
缺點
RSA的密鑰很長,加密速度慢。
(1)對稱加密應用擴展閱讀
W.Diffie和M.Hellman 1976年在IEEE Trans.on Information刊物上發表了「 New Direction in Cryptography」文章,提出了「非對稱密碼體制即公開密鑰密碼體制」的概念,開創了密碼學研究的新方向。
在通用密碼體制中,得到廣泛應用的典型演算法是DES演算法。DES是由「轉置」方式和「換字」方式合成的通用密鑰演算法,先將明文(或密文)按64位分組,再逐組將64位的明文(或密文),用56位(另有8位奇偶校驗位,共64位)的密鑰,經過各種復雜的計算和變換,生成64位的密文(或明文),該演算法屬於分組密碼演算法。
❷ 對稱加密演算法的原理應用
對稱加密演算法的優點在於加解密的高速度和使用長密鑰時的難破解性。假設兩個用戶需要使用對稱加密方法加密然後交換數據,則用戶最少需要2個密鑰並交換使用,如果企業內用戶有n個,則整個企業共需要n×(n-1) 個密鑰,密鑰的生成和分發將成為企業信息部門的惡夢。對稱加密演算法的安全性取決於加密密鑰的保存情況,但要求企業中每一個持有密鑰的人都保守秘密是不可能的,他們通常會有意無意的把密鑰泄漏出去——如果一個用戶使用的密鑰被入侵者所獲得,入侵者便可以讀取該用戶密鑰加密的所有文檔,如果整個企業共用一個加密密鑰,那整個企業文檔的保密性便無從談起。DESCryptoServiceProvider
RC2CryptoServiceProvider
RijndaelManaged
//例加密文本文件(RijndaelManaged )
byte[] key = { 24, 55, 102,24, 98, 26, 67, 29, 84, 19, 37, 118, 104, 85, 121, 27, 93, 86, 24, 55, 102, 24,98, 26, 67, 29, 9, 2, 49, 69, 73, 92 };
byte[] IV ={ 22, 56, 82, 77, 84, 31, 74, 24,55, 102, 24, 98, 26, 67, 29, 99 };
RijndaelManaged myRijndael = new RijndaelManaged();
FileStream fsOut = File.Open(strOutName, FileMode.Create,FileAccess.Write);//strOutName文件名及路徑 FileStream fsIn = File.Open(strPath, FileMode.Open,FileAccess.Read);
CryptoStream csDecrypt=new CryptoStream(fsOut,myRijndael.CreateEncryptor(key, IV),CryptoStreamMode.Write);//讀加密文本
BinaryReader br = new BinaryReader(fsIn);
csDecrypt.Write(br.ReadBytes((int)fsIn.Length),0, (int)fsIn.Length);
csDecrypt.FlushFinalBlock();
csDecrypt.Close();
fsIn.Close();
fsOut.Close();
//解密文件
byte[] key = { 24, 55, 102, 24, 98, 26, 67, 29, 84, 19, 37, 118,104, 85, 121, 27, 93, 86, 24, 55, 102, 24, 98, 26, 67, 29, 9, 2, 49, 69, 73, 92};
byte[] IV ={ 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26,67, 29, 99 };
RijndaelManaged myRijndael = new RijndaelManaged();
FileStream fsOut = File.Open(strPath, FileMode.Open, FileAccess.Read);
CryptoStream csDecrypt = new CryptoStream(fsOut, myRijndael.CreateDecryptor(key,IV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(csDecrypt);//把文件讀出來
StreamWriter sw = new StreamWriter(strInName);//解密後文件寫入一個新的文件
sw.Write(sr.ReadToEnd());
sw.Flush();
sw.Close();
sr.Close();f
sOut.Close();
用圖片加密(RC2CryptoServiceProvider )
FileStreamfsPic = new FileStream(pictureBox1.ImageLocation,FileMode.Open, FileAccess.Read);
//加密文件流(textBox1.Text是文件名及路徑)
FileStream fsText = new FileStream(textBox1.Text, FileMode.Open,FileAccess.Read);
byte[] bykey = new byte[16]; //初始化
Key IVbyte[] byIv = new byte[8];
fsPic.Read(bykey, 0, 16);
fsPic.Read(byIv, 0, 8);
RC2CryptoServiceProvider desc = newRC2CryptoServiceProvider();//desc進行加密
BinaryReader br = new BinaryReader(fsText);//從要加密的文件中讀出文件內容
FileStream fsOut = File.Open(strLinPath,FileMode.Create, FileAccess.Write); // strLinPath臨時加密文件路徑CryptoStream cs = new CryptoStream(fsOut, desc.CreateEncryptor(bykey,byIv), CryptoStreamMode.Write);//寫入臨時加密文件
cs.Write(br.ReadBytes((int)fsText.Length),0, (int)fsText.Length);//寫入加密流
cs.FlushFinalBlock();
cs.Flush();
cs.Close();
fsPic.Close();
fsText.Close();
fsOut.Close();
用圖片解密
FileStream fsPic = new FileStream(pictureBox1.ImageLocation, FileMode.Open, FileAccess.Read); //圖片流FileStream fsOut = File.Open(textBox1.Text,FileMode.Open, FileAccess.Read);//解密文件流
byte[] bykey = new byte[16]; //初始化
Key IVbyte[] byIv = new byte[8];
fsPic.Read(bykey, 0, 16);
fsPic.Read(byIv, 0, 8);
string strPath = textBox1.Text;//加密文件的路徑
int intLent = strPath.LastIndexOf("\")+ 1;
int intLong = strPath.Length;
string strName = strPath.Substring(intLent, intLong - intLent);//要加密的文件名稱
string strLinPath = "C:\"+ strName;//臨時解密文件路徑
FileStream fs = new FileStream(strLinPath, FileMode.Create,FileAccess.Write);
RC2CryptoServiceProvider desc = newRC2CryptoServiceProvider();//desc進行解密
CryptoStream csDecrypt = new CryptoStream(fsOut, desc.CreateDecryptor(bykey,byIv), CryptoStreamMode.Read);
//讀出加密文件
BinaryReader sr = new BinaryReader(csDecrypt);//從要加密流中讀出文件內容
BinaryWriter sw = new BinaryWriter(fs);//寫入解密流
sw.Write(sr.ReadBytes(Convert.ToInt32(fsOut.Length)));
//sw.Flush();
sw.Close();
sr.Close();
fs.Close();
fsOut.Close();
fsPic.Close();
csDecrypt.Flush();
File.Delete(textBox1.Text.TrimEnd());//刪除原文件
File.Copy(strLinPath, textBox1.Text);//復制加密文件
File.Delete(strLinPath);//刪除臨時文件
❸ aes加密是什麼意思
AES加密(Advanced Encryption Standard)是一種高級加密標准。AES加密演算法是現今公認最為安全的加密演算法之一。它使用對稱密鑰加密(Symmetric Key Encryption)技術,即加密和解密所用的密鑰是相同的。由於其高強度的加密演算法,AES加密演算法被廣泛應用於保護重要數據的加密過程中。
AES加密演算法具有強大的加密能力,對於安全性要求較高的客戶來說,採用AES加密演算法能夠有效保障用戶的數據安全。同時,AES加密演算法具有高效的加密和解密速度,對於需要大量數據加密和解密的大型系統來說,採用AES加密演算法可以提高系統的響應速度和處理效率。
雖然AES加密演算法是一種高級加密標准,但是採用AES加密演算法並不能保證數據完全安全。因為黑客滲透技能的不斷提高,破解AES加密演算法也成為了黑客攻擊的一個重點。因此,除了採用高級加密演算法外,還需要通過其他手段來保護用戶數據的安全,如訪問控制、防火牆、數據備份等。
❹ 什麼是對稱密碼和非對密碼,分析這兩種密碼體系的特點和應用領域
一、對稱密碼
1、定義:採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
2、特點:演算法公開、計算量小、加密速度快、加密效率高。
3、應用領域:由於其速度快,對稱性加密通常在消息發送方需要加密大量數據時使用。
二、非對密碼
1、定義:非對稱密碼指的是非對稱密碼體制中使用的密碼。
2、特點:
(1)是加密密鑰和解密密鑰不同 ,並且難以互推 。
(2)是有一個密鑰是公開的 ,即公鑰 ,而另一個密鑰是保密的 ,即私鑰。
3、應用領域:很好的解決了密鑰的分發和管理的問題 ,並且它還能夠實現數字簽名。
(4)對稱加密應用擴展閱讀
對稱加密演算法特徵
1、加密方和解密方使用同一個密鑰;
2、加密解密的速度比較快,適合數據比較長時的使用;
3、密鑰傳輸的過程不安全,且容易被破解,密鑰管理也比較麻煩
❺ 對稱加密演算法的應用模式
加密模式(英文名稱及簡寫) 中文名稱 Electronic Code Book(ECB) 電子密碼本模式 Cipher Block Chaining(CBC) 密碼分組鏈接模式 Cipher Feedback Mode(CFB) 加密反饋模式 Output Feedback Mode(OFB) 輸出反饋模式 ECB:最基本的加密模式,也就是通常理解的加密,相同的明文將永遠加密成相同的密文,無初始向量,容易受到密碼本重放攻擊,一般情況下很少用。
CBC:明文被加密前要與前面的密文進行異或運算後再加密,因此只要選擇不同的初始向量,相同的密文加密後會形成不同的密文,這是目前應用最廣泛的模式。CBC加密後的密文是上下文相關的,但明文的錯誤不會傳遞到後續分組,但如果一個分組丟失,後面的分組將全部作廢(同步錯誤)。
CFB:類似於自同步序列密碼,分組加密後,按8位分組將密文和明文進行移位異或後得到輸出同時反饋回移位寄存器,優點最小可以按位元組進行加解密,也可以是n位的,CFB也是上下文相關的,CFB模式下,明文的一個錯誤會影響後面的密文(錯誤擴散)。
OFB:將分組密碼作為同步序列密碼運行,和CFB相似,不過OFB用的是前一個n位密文輸出分組反饋回移位寄存器,OFB沒有錯誤擴散問題。