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

如何使用php在Mysql中存储一些加密字符串?,php,mysql,string,encryption,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))); 现在,假设我不想为数据编制索引或对其执行任何搜索,只想问两个问题:

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

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

$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\u query()函数

  • 我看到一些人实际上将base64编码,然后简单地插入,就像普通字符串那样,例如:

    mysql_query("insert into faps data='".base64_encode($encrypted)."'");
    
    但有些事情告诉我,这不是解决问题的办法。即使在空间方面也不够

    更好的方法是什么?

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

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

    另一种方法是使用MySql自己的加密函数。因为这可能会为您节省一些编程麻烦?将压力从PHP服务器移动到MySQL服务器-因此考虑哪一个压力较低,以及在一个开放网络上的未压缩SQL指令的旅行等。

    < P>使用一个VARBION(如您所建议的)或一个BLB,这取决于所需的长度。为了安全起见,将字符串的长度乘以4

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


    另一种方法是使用MySql自己的加密函数。因为这可能会为您节省一些编程麻烦?将压力从PHP服务器转移到MySQL服务器-因此考虑哪一个压力较小,以及在一个开放的网络上是否经过未压缩的SQL指令的旅行等等。

    我不会去进行自定义加密,与OFC一起玩是很有趣的,但是我不只是没有心情,我有一个已经很好的工作了。我也注意到我也不会考虑PDO。但据我所知,使用mysql\u real\u escape\u string($encrypted)存储是安全的吗?数据是二进制的,不是字符串,所以我不知道。。。我只是很谨慎,如果你能回答我会很感激的。是的,你可以用mySQL\u real\u escape\u sting存储二进制数据。谢谢,这确实起到了作用:)我不认为它像用escape字符串转义它那样简单,即使它是二进制的。我不会使用自定义加密,这对ofc来说很有趣,但我不只是没有心情,而且我已经有了一个运行良好的。我也注意到我也不会考虑PDO。但据我所知,使用mysql\u real\u escape\u string($encrypted)存储是安全的吗?数据是二进制的,不是字符串,所以我不知道。。。我只是很谨慎,如果你能回答这个问题,我将不胜感激。是的,你可以用mySQL\u real\u escape\u sting存储二进制数据。谢谢,这确实起到了作用:)我认为它不像用escape字符串转义那么简单,即使它是二进制的