【发布时间】:2013-01-16 04:56:50
【问题描述】:
例子:
$data = "Test Data\x00\x00";
echo strlen($data);
$key = "mykey";
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, MD5($key, true), $data, MCRYPT_MODE_ECB);
echo strlen($encrypted);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, MD5($key, true), $encrypted, MCRYPT_MODE_ECB);
echo strlen($decrypted);
$newData = rtrim($decrypted,"\x00");
echo strlen($newData);
输出:
11
16
16
9 <-- I want 11 here
那么,有什么方法可以解密在加密之前可能已经填充了空值的数据,并取回正确长度的数据?
【问题讨论】:
-
旁注:1) 你不应该使用 ECB 2) 你应该使用 IV 3) 你应该使用经过身份验证的加密
-
这是与第三方的接口,所以我无法控制使用什么加密。
标签: php encryption