我想使用cakephp的插件将加密数据存储在数据库中。但我想计算数据库字段需要多长的时间。
以下是插件的加密代码:
return base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256, md5($settings['key']
), $value, MCRYPT_MODE_CBC, md5(md5($settings['key']
))));
例如2000加长原始字符串输入需要多长的字段长度? VARCHAR(?)
如果您需要更多详细信息,请访问 所有插件代码:
答案 0 :(得分:1)
我认为估计的答案是,源字符串长度+ 35%
(来源str长度)。
我做了这样的测试以找到答案:
$key = 'really long key hello world';
// Source String
$str = '';
for ($i = 1; $i <= 2000; $i++) {
$str .= 'x';
}
$slength = strlen($str);
echo 'source str length = '. $slength."<br>";
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_ECB));
$elength = strlen($encrypted);
echo 'encrypted str length = '. $elength."<br>";
echo 'diff = '. (($elength - $slength)/$slength) * 100 .'%';
输出:
source str length = 2000
encrypted str length = 2688
diff = 34.4%
source str length = 20000
encrypted str length = 26668
diff = 33.34%
为什么不使用字段类型varchar
而不是使用固定的text
?
答案 1 :(得分:0)
使用CakePHP的Security :: encrypt()方法,因为它使用Rijndael-256开箱即用。根据使用的密钥,Rijndael密码是可变长度的,因此VarChar不起作用。密文是二进制数据,不需要对其进行编码,因此您将使用BLOB字段。