除了最基礎的使用外,區塊加密演算法還能根據需求玩出不一樣的花樣
常見的區塊加密使用模式主要有兩種
ECB全文Electronic codebook
顧名思義codebook就是傳統的密碼表,明文跟金鑰就能直接對照出密文
看看下圖
不難看出ECB就是值解把明文分成指定大小的區塊,然後直接丟入區塊加密和金鑰做加密
CBC全文Cipher block chaining
看看下圖
chaining意為每個block的結果都會和下一個要加密的block做xor這樣就成為了一條加密鍊環環相扣
而對於最初的明文block則會用一段初始陣列IV來和該block做xor,這個IV不用特意取保密他,只要金鑰沒有外洩
都不會被破解,但IV要存下來,解密時會用到
為啥要搞這麼麻煩?原因很簡單,就是ECB用同樣的明文block會得到同樣的密文
在書寫文字上可能還好,畢竟兩段文字要一模一樣還是有些難度
但如果是對圖片的位元做加密,就不好說了
上面這張圖可以看出透過ECB加密的企鵝還是會保留部分的特徵
畢竟企鵝就這些顏色,兩個block完全一樣好像也挺容易的
而CBC透過IV和輸出回傳的加密鍊就能讓每個block的不會一樣
這樣就能避免部分特徵被保留的問題了
但CBC也付出了加密速度和容錯率的代價
想想看ECB每個block都是獨立的那就意味著能同時加密很多block達成加快運算的目的,而且一個block中的一個位元出錯最多只會影響該block
但CBC每個block都必須等待前面的block做完才能開始,造成了不能平行加密而導致速度變慢的問題,而且一個block中的一個位元錯誤就會導致後面全掛,因為他是環環相扣的
還有很多使用mods
但好像都不太常見
有興趣可以參考
https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Confidentiality_only_modes