Initialization-Vector
對於非常短的明文,什麼算法會給出最短的密文?
我必須加密一些非常短的消息(大約 5 個字元),並且我希望密文盡可能短。我目前正在使用 AES,但初始化向量 (IV) 使我的最小密文為 32 字節,即使對於 1 字節的明文也是如此。
我可以做得比 32 字節更好嗎?
對於這樣的短消息,您不會從使用需要初始化向量的 CBC、CFB 等獲得太多(如果有的話)(這些操作模式是為了確保在輸入塊時不會重複輸出塊重複)。對於您的情況(輸入小於一個塊),使用 ECB 應該不會造成重大問題。
對於分組密碼,ECB 模式下的最小輸出大小將是一個分組。對於 AES,這將是 16 個字節。對於更小的輸出,3DES 的塊大小只有 8 個字節。為了更小,Rijndael(後來成為 AES 的算法)最初設計用於處理 32 位的倍數的任何塊大小,因此您可以將它與 32 位塊大小一起使用。
$$ Oops – it supports multiples of 32 bits, but no smaller than 128 bits. $$ 使用流密碼,您可以獲得與輸入大小相同的輸出,但您需要為每條消息使用不同的密鑰。這使得它們不適合大多數人/用途。