【发布时间】:2018-11-07 09:01:04
【问题描述】:
由于在我的数据库中加密了某些信息,我在使用现有的搜索功能时遇到了很大的困难。它的功能是按名字、姓氏或两个名字搜索学生表。
旧的工作代码如下:
SELECT *
FROM students
WHERE CONCAT(TRIM(firstname), ' ', TRIM(lastname)) LIKE '%$result%'
AND currentyear = $currentyear
ORDER BY students.lastname
加密后新的无效代码:
SELECT *,
AES_DECRYPT(firstname,UNHEX(SHA2('',512))) AS stfirst,
AES_DECRYPT(lastname,UNHEX(SHA2('',512))) AS stlast
FROM students
WHERE CONCAT(TRIM(stfirst), ' ', TRIM(stlast)) LIKE '%$result%'
AND currentyear = $currentyear
ORDER BY stlast
我在这里错过了什么非常愚蠢的东西吗?谢谢。
【问题讨论】:
-
请不要输入密码,现在在您的实时实例中更改密码。
-
为什么要加密表中的数据?现在使用的查询将非常低效,并且无法使用索引
-
我必须为新的欧洲 GDPR 法规加密数据。
-
不过,将您的
$result拆分为两个(?)部分可能更有意义,并对它们进行加密,以便您可以将它们与已经加密的列内容进行比较......(这可能会留下修剪的问题,但为什么当数据开始插入时没有应用?如果此时忽略,也许是时候首先触发解密-修剪-加密更新查询了。) -
请标记您正在使用的数据库。
标签: php sql database concat trim