2010-10-27 30 views
0

我只是好奇,如果有人能让我指向正确的方向与搜索MySQL与AES加密。用AES加密搜索MySQL

有几件事情需要考虑。如果我在搜索之前将关键字加密并将其加密,则我将加密与加密进行比较,即使一个字母是上限而另一个字母不是MySQL内部的上限,那么它也不会使用LIKE%$关键字%

另一个因素是我的加密过程。 $变量 - >清理额外间距 - > strip_slashes(etc) - >转换为AES - >在导入到数据库之前转换为Base_64。

额外编码的原因是抽象字符进入MySQL的问题,这是一个无瑕的导入使用此。所以使用内置的MySQL AES并不是我的最佳选择。

所以我猜测做这件事的最佳途径就是沿着这些路线。

$ variable - > [keyword] 做一个sql结果解密它并搜索字符串?但这似乎有点矫枉过正...

也许有人可以为我阐明这一点,我一定会感激。

干杯!并提前致谢!

+0

除了非常重要的信息之外,将我的所有数据解密到数据库中会更好吗?目前它拥有IE:SIN,DOB,ADDRESS,ALL CONTACT等信息......它在一个地方的数据量很大,但我不确定是否聪明地加密SIN并将其余的纯文本保留下来。 ..等 – Justin 2010-10-27 23:24:28

回答

0

如果您在插入数据之前对数据进行了加密,除了对每行进行迭代,解密和搜索结果之外,无法搜索的所有部分值。

+0

您如何看待我上面添加到我的问题的评论? – Justin 2010-10-27 23:26:07

3

这是一个缓慢的反应,但你可以通过做这样的事情得到更快的搜索结果。

比方说,我们希望这些句子加密:

  1. 我的好车
  2. 我爱的mysql
  3. 少数

你可以保存它们加密,让我们假设* **或者,您可以存储加密值并包含原始文件的前3个字符:my * **,I L * * *,闽* * *

在这种情况下,你可以使用MySQL来搜索你要找的第一个3个字符并对其余数据执行完全解密。

当然,这只适用于“开始于”某个字符串的搜索。这3个字符只是一个随机数,应根据灵敏度,性能需求和数据集大小来确定。

+0

是的,这实际上是一个有趣的想法,我将不得不考虑这一点,以备将来使用!感谢您的输入! – Justin 2012-08-31 00:26:18

1

下面是一个与Andrew所建议的相似的例子,如果它有帮助的话。

$ sql_query = “SELECT *,AES_DECRYPT(text_in_blob, '$盐')AS decrypted_text FROM MY_TABLE WHERE CONVERT(AES_DECRYPT(text_in_blob, '$盐')使用LATIN1)LIKE '%关键字%'”;