我如何存储一些加密的字符串(大约一到几个单词)?
假设我加密了这个字符串:
$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)));
现在,假设我不想索引该数据,或对其执行任何搜索,只想问两个问题:
我最好使用哪种数据类型?我猜是 varbinary,但我不确定...
我将如何处理我的查询?假设我会使用一个简单的 mysql_query() 函数。
我看到有些人实际上会进行 base64 编码,然后简单地插入它,就像普通字符串一样,例如:
mysql_query("insert into faps data='".base64_encode($encrypted)."'");
但有些事情告诉我这不是做这件事的方法。甚至在空间方面也不够。
什么是更好的方法?
最佳答案
根据所需的长度,使用 varbinary(如您所建议的)或 blob。为了安全起见,将字符串的长度乘以 4。
无需对其进行 base64 编码 - 这只会增加更多长度。您所需要的只是常规转义函数(基本级别的 mysql_real_escape_string,或使用 PDO 进行绑定(bind),这对您来说是安全的)。
另一种可能是使用 MySql 自己的加密函数。 http://dev.mysql.com/doc//refman/5.5/en/encryption-functions.html因为这可以为您节省一些编程麻烦?将压力从 PHP 服务器转移到 MySQL 服务器 - 因此请考虑哪个压力较小,以及通过开放网络传输未压缩的 SQL 指令是否重要等。
关于php - 我将如何使用 php 在 Mysql 中存储一些加密的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709698/