1

如何存储一些加密字符串(大约一到几个单词)?

假设我加密了这个字符串:

$key='fappings'; // Encryption Key
$str='Mama Luigi'; // String that I Encrypted
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key)));

现在,假设我不想索引该数据或对其执行任何搜索,只想问两个问题:

  1. 我会更好地使用什么数据类型?我猜是varbinary,但我不确定......

  2. 我将如何处理我的查询?假设我会使用一个简单的 mysql_query() 函数。

我看到有些人实际上会进行 base64 编码,然后简单地插入它,就像普通字符串一样,例如:

mysql_query("insert into faps data='".base64_encode($encrypted)."'");

但是有些事情告诉我这不是这样做的方法。即使在空间方面也不足。

什么是更好的方法?

4

1 回答 1

1

根据所需的长度,使用 varbinary(如您的建议)或 blob。为了安全起见,将字符串的长度乘以 4。

无需对它进行 base64 编码——这只会增加更多的长度。您所需要的只是常规的转义函数(基本级别的 mysql_real_escape_string,或使用 PDO 绑定,它会让您安全)。

另一种方法可能是使用 MySql 自己的加密函数。http://dev.mysql.com/doc//refman/5.5/en/encryption-functions.html因为这可以为您节省一些编程麻烦?将压力从 PHP 服务器转移到 MySQL 服务器 - 所以考虑哪个压力较小,以及未压缩的 SQL 指令在开放网络上的传输是否重要等。

于 2012-07-29T14:15:16.120 回答