我正在使用Triple DES算法來使用PHP加密數據。然後,我使用C#Windows Forms應用程序對其進行解密。使用三重DES解密數據在原始文本末尾添加「 0 0 0 0 0 0 0 0」
對於某些數據,當我解密它時,我發現\0\0\0\0\0\0\0\0
在原始文本的末尾用PHP加密。可能是什麼原因造成的?
我正在使用Triple DES算法來使用PHP加密數據。然後,我使用C#Windows Forms應用程序對其進行解密。使用三重DES解密數據在原始文本末尾添加「 0 0 0 0 0 0 0 0」
對於某些數據,當我解密它時,我發現\0\0\0\0\0\0\0\0
在原始文本的末尾用PHP加密。可能是什麼原因造成的?
加密算法要求數據是特定字節數的倍數。如果數據長度不正確,則會添加空字符來填充數據。這是你解密後看到的。這是預期的,你只需要去掉它們。
mcrypt_encrypt
默認情況下使用零填充的選擇不當。而是使用PKCS7填充,如mcrypt_encrypt頁面上用戶註釋中所述。
問題是沒有辦法知道零字節是來自填充還是因爲明文字節實際上是零。 –