對稱性加密演算法
des (data encryption standard 資料加密演算法) 與 aes (advanced encryption standard 高階加密標準),都是一種對稱加密演算法,既加密和解密使用同乙個金鑰。
塊加密演算法
aes 與 des 同樣都是一種塊加密演算法,會把明文按等長的塊然後分別進行加密。不同之處在於des 的金鑰長度為 56 位加 8 位奇偶校驗位(每組的第8位作為奇偶校驗位),而aes 的金鑰長度為 128,192或256位(在 c# 中為 256 位)。
由於 des 的金鑰長度過,des 被認為是不安全的,已被 aes 所取代。
塊加密演算法模式
在 c# 中,塊加密演算法支援 5 種模式,分別為ecb、cbc、cfb、ofb、cts。其中在cbc、cfb、ofb模式下需要用到加密向量:iv (initialization vector),它是為了保證對同一明文加密時不會產生相同的密文。而ecb、cbc模式會將長度不足的源資料填充至金鑰的整數倍,其餘三種模式則保持長度不變,這主要是加密時的異或操作導致的。
ecb (electronic codebook電碼本)
ecb 相對比較簡單,原理是將資料切割後,對每一塊單獨進行加密,不需要開頭所說的 iv(加密向量)。
這樣做的優點是可以並行處理,速度可以非常快;缺點也很明顯,在源資料跟金鑰不變的情況下,加密後的資料都是一樣的。
未加密時
ecb 加密
cbc (cipher block chaining密碼分組鏈結)
cbc 不同於 ecb 的是,它會將第一塊與 iv 異或之後再進行加密,之後再以前一塊的加密資料作為 iv,再對後一塊進行加密;而解密時可以直接利用前一塊的密文,因此可以並行執行。
cbc 的優點是安全性比較好,不過缺點是加密的速度會比較慢。而且由於加密時的序列性,若之前的源明文發生改變,那往後密文也會全部改變;而解密時,密文的改變只會導致對應塊解密後的明文發生變化,以及下一塊的對應位改變(解密的資料需要與上一塊密文異或)。
將加密資料的某一位改變後的結果:
明文:some information about aes encryption method.cfb (cipher feedback密碼反饋)在 cfb 模式中,是對向量進行加密,再與明文進行異或操作,密文再作為向量參與下乙個加密。所謂反饋,就是指前乙個密文作為下一次加密的輸入,再進行加密。解密:x?z????od??1^? about a*s encryption method.
cfb 在解密時,也是用的加密器,因此解密過程與 cbc 的加密過程是一樣的。
ofb (output feedback 輸出反饋)
類似於 cfb 模式,先對向量加密,加密結果與明文進行異或,同時作為下乙個加密的向量;其解密過程則與加密過程
ctr (counter 整數計數器)
ctr 模式通過加密乙個連續的「計數器」來生成金鑰塊,計數器可以用任何方法來生成。由於這種特性,ctr 的加密可以並行執行。
c# **:
privateview codevoid
aestest()
encrypted =msencrypt.toarray();}}
icryptotransform decryptor =aes.createdecryptor(aes.key, aes.iv);
using (memorystream msdecrypt = new
memorystream(encrypted))}}
}}
des 與 aes 的用法基本相同,只是密碼與向量的長度不一樣。
對稱加密之DES與AES
金鑰加密也稱為對稱加密,速度快,但加密和解密的鑰匙必須相同,只有通訊雙方才能知道鑰匙。高階資料加密標準 aes author 尹勇 public class aesdome public static void main string args throws exception author 尹勇 ...
C 實現DES加密解密,AES加密解密
des演算法描述簡介 des是data encryption standard 資料加密標準 的縮寫。它是由ibm公司研製的一種加密演算法,美國國家標準局於1977年公布把它作為非機要部門使用的資料加密標準 它是乙個分組加密演算法,他以64位為分組對資料加密。同時des也是乙個對稱演算法 加密和解密...
C 中使用DES和AES加密解密
c 中使用des和aes加密解密 using system using system.text using system.security.cryptography using system.io namespace mycryptography 獲取向量 private static string...