Blocksize
CBC 和 GCM 中的塊大小
如果我在這種情況下使用 CBC 密碼,我的加密文本是否必須是塊大小的倍數?GCM 也一樣嗎?
不,GCM 不需要填充,也不需要明文是塊大小的倍數。
GCM 是一種將 CTR(一種流密碼模式)與 GMAC 身份驗證相結合的模式,dave 指出這確實需要其輸入是其塊大小的倍數,即 128 位。然而,GMAC 過程只是對密文輸入進行空填充,然後將數據的長度作為附加輸入進行處理,以消除與該填充方法相關的問題。
CTR 模式通過加密遞增計數器將塊密碼轉換為流密碼。GCM 在設計上僅與 128 位分組密碼一起使用,因此流密碼輸出以 128 位增量生成,並且僅使用所需的位來加密明文。如果明文為 136 位,則生成 256 位流密碼輸出,使用前 136 位。
因為GCM是基於CTR的,所以密文的長度等於明文的長度,加上GMAC認證標籤長度,再加上Nonce的長度。