php - 我将如何使用 php 在 Mysql 中存储一些加密的字符串?

标签 php mysql string encryption

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

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

$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_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/

相关文章:

c# - 如何在 C# 中删除字符串中的前 n 行?

php - Codeigniter MYSQL 返回最近的行

PHP MySQL,检查两个表中的重复项

php - 如何在 Select 语句 laravel 5.1 中编写子查询?

c++ - MySQL 数据库连接到 c++ win32 项目

javascript - 如何从 JSON 中统计具体的值

php - 在 foreach 循环中存储变量

javascript - Ajax 不将数据发送到 PHP 文件

C++ 多个 cin.get()

python - 提高列表连接的速度?