AES Padding

AES 作爲塊加密算法(block cipher),要求被加密數據具有固定的大小,比如16 字節。那麼對於一段任意大小的明文,對最後一個塊補全到 16 字節就是一個必要的過程。以及在解密時將 padding 字節刪除。

那麼這裏的關鍵問題便是如何設計這個 padding 方法,使解密後能夠只通過明文便可以精準的切掉小尾巴。

容易發現,任何魔法字節都是不可靠的,即 pad 自身必須包含明確的描述 pad 長度的信息。出於同樣的考慮,即使原始信息正好膜 16 餘 0,pad 也是需要加的,這種情況可以加一個長度 16 的 pad。那麼因爲 pad 長度最高 16,最小 1,使用一個字節完全可以描述,那麼我們可以約定:

每段明文在加密前都會添加一個 1-16 字節的 pad,使總長度膜 16 餘 0。
pad 的長度由 pad 的最後一個字節描述

這樣就生成了一個可靠的 padding 方法,其實也就是: PKCS7。<-- 這什麼破渲染器

不過 PKCS7 在此之上還加了一層改進:就是明確要求 pad 的每個字節都是 pad 長度。這樣解密後的明文更加易讀。也可以做額外的判斷,如果你想的話。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章