如何使用php在Mysql中存储一些加密字符串


How would I store some encrypted strings in Mysql using php?

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

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

$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)."'");

但有一件事告诉我,这不是解决问题的办法,即使是太空也不够。

什么是更好的方法?

根据需要的长度,使用varbinary(根据您的建议)或blob。为了安全起见,把绳子的长度乘以4。

不需要对其进行base64编码,这只会增加更多的长度。您所需要的只是常规的转义函数(基本级别的mysql_real_sescape_string,或者使用PDO绑定,这样对您来说是安全的)。

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