昨天我們提到 padding 的概念,今天我們就來看看實際上 padding的操作,
以 AES 為例 ( 1 個區塊的大小是 16 bytes ) ,所以 :
輸入 ITHOME SECURITY ( 因為字元 " ITHOME SECURITY " 包含空格,總共是 15 bytes ,所以這個區塊缺少 1 個 bytes )
我們補上 padding 後就變成 ITHOME SECURITY\x01
輸入 Hamlet ( 因為區塊缺少 10 個 bytes )
所以我們補上 padding 後 就會變成 Hamlet\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a
輸入 Cryptography2020 ( 區塊的長度剛剛好,但我們還是需要補相同長度 padding )
補上 padding 後 就會變成 Cryptography2020\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10
當我們輸入的資料很大時,就必須要分組,並同時決定要用哪一種操作模式 Mode 加密 以下皆以 AES 為例
當資料多於 128 bits 時,就必須要分組,而 Mode 就是當我們將資料分成好幾組時,要怎麼對這些分組後的區塊做加密,
Mode 有分成五種 :
Electronic codebook ( ECB )
Cipher - block chaining ( CBC )
Couter ( CTR )
Cipher feedback
Output feedback
其中,最後的兩個 Cipher feedback 與 Output feedback 很少用, 所以我們不討論,之後會進到 Mode 的單元時,就只會介紹前 3 個