【发布时间】:2011-11-18 03:21:59
【问题描述】:
我已经看到这个问题问了几次,但我不知道我将如何在这里问它......希望你们没问题。
基本上我有这个脚本可以正常工作,并且可以顺利打印我的结果:
$algorithm = MCRYPT_BLOWFISH;
$mode = MCRYPT_MODE_CFB;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode), MCRYPT_DEV_URANDOM);
$key = 'Wassup';
$data = 'I am a guy';
$enc_data = rtrim(mcrypt_encrypt($algorithm,$key,$data,$mode,$iv));
$plain_text = base64_encode($enc_data);
echo $plain_text . "\n";
// OUTPUTS: 6m3D5qSrfz3w6pKuuybs
$enc_data = base64_decode($plain_text);
$decoded = mcrypt_decrypt($algorithm,$key,$enc_data,$mode,$iv);
echo $decoded;
// OUTPUTS: I am a guy
这是完美的。现在......我不只是立即输出我输入的内容,而是尝试将该信息存储在我的数据库中以便稍后解密。
我可以在我的表格行中看到加密的字符串:6m3D5qSrfz3w6pKuuybs。所以,我相信它会很好..
当我查询它时,它看起来是一样的, 但现在当我解码和解密时,我得到类似:ÝÄ/$ÍñËt05883700
表字段设置为 VARCHAR (255) utf8_general_ci。这就是问题所在吗?
【问题讨论】:
-
改用 blob/二进制字段。 text/varchar 字段受字符翻译的影响,而 blob 则逐字传递。
-
@Marc S/他正在使用
base64_encode()