Php 修剪解密的字符串安全吗?

Php 修剪解密的字符串安全吗?,php,encryption,aes,rijndael,cbc-mode,Php,Encryption,Aes,Rijndael,Cbc Mode,我正在使用以下方法加密和解密字符串: $key = 'my key'; $data = 'my string'; $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM); $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MOD

我正在使用以下方法加密和解密字符串:

$key = 'my key';
$data = 'my string';
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
$data = trim($decrypted, chr(0));


删除加密算法添加的填充是否安全,或者是否有必要在加密之前存储数据的长度

< P>通常在右侧添加填充,因此考虑<代码> rTrime(<)/代码>:


然而,这仍然不是完全安全的,因为在PHP中字符串可以包含NUL字节。如果由于某种原因,平原在结尾有NUL字节,
rtrim
将删除填充和以前的NUL字节。

您在解密后正在修剪值,因此当前代码不会出现ay问题


如果您尝试重新加密不同的、经过修剪的数据,您将得到不同的加密值。

请自行查找!尝试一组不同长度的字符串。如果它没有解密到相同的值,那么您就无法执行:)为什么不修剪、解密并查看是否返回原始字符串。
$data = rtrim($decrypted, chr(0));