2017-10-20 122 views
2

由於客戶端的某些限制,他們在將文本傳遞給AES alogirhtm之前使用0x00填充純文本,而不是正常的PKCS5/PKCS7或類似的填充。AES128 CBC可以使用0填充嗎?

雖然它是可以在我的服務器端,我有一個是否使用0填充工程的問題。舉一個例子,明文以0填充字符結尾。服務器端不可能區分它。

是0填充可接受的填充方法之一,如果是的話我的方應該如何正確處理填充?

在此先感謝。

回答

2

不確定「ASCII代碼0」是什麼意思,我會假設一個值爲0x00的字節? (是十六進制還是一件事)請參閱Zero padding如果原始文件以一個或多個零字節結尾,則零填充可能不可逆,從而無法區分明文數據字節和填充字節。

空填充(0x00)可以用於不以空結尾的數據,ASCII文本是一個有效的示例。不贊成使用的PHP mcrypt會這樣做,並且null填充會產生互操作性問題。

所以:是的,null填充確實對一些數據(如文本)有效,但對於二進制數據則失敗。最好不要使用它,PKCS#7.PKCS#5填充是一個更好和更普遍使用的填充。

相關問題