如何检测变量是否包含垃圾?
我有mcrypt_encrypt()
生成的加密文字。我试图编辑这个(假设有人会改变加密文本)。我希望在解密后返回一个空值而不是"Ú0úà¡ßQ9õ÷rŒi¾¼v’Ó}çTc~Žk"
答案 0 :(得分:2)
如果我理解正确,您正在寻找一种加密数据的方式,以便能够检测是否有人篡改了数据。
实现此目标的最简单方法是在加密数据之前将校验和合并到数据中。
例如,您可以按如下方式加密数据:
$plaintext = "Lorem ipsum dolor sit amet";
$hash = md5($plaintext);
$output = base64_encode(mcrypt_encrypt(CIPHER, KEY, $hash.$plaintext, MODE));
然后解密过程如下所示:
$input = mcrypt_decrypt(CIPHER, KEY, base64_decode($output, MODE));
$hash = substr($input, 0, 32);
$text = substr($input, 32);
if (md5($text) != $hash) {
die("Invalid data");
}
/* If you get this far, the encrypted data is fine */
:
echo $text;
: