有关MySQL表中加密/解密值的2个查询。
1)我怎样才能对这些进行排序,因为值是加密的,ORDER BY已经出局,JavaScript不会正确排序a)和b)。下面的代码,原谅格式化。
2)我如何查询“值之间”
提前致谢。
<html>
<body>
<table>
<tr>
<?php
// Connects to Server, queries all on that table.
$db_connect=mysql_connect("$host", "$username", "$password")or die("Sorry, Poor or No Connection");
$db_found=mysql_select_db("$db_name")or die("Sorry, Cannot Connect to Database");
$result=mysql_query("SELECT * FROM $tbl_name");
// Creates Table to be used
echo "
<th>First Name</th>
<th>Last Name</th>
</tr>";
while($row = mysql_fetch_array($result)) {
// Decrypts table IDs
$dec_FName = decrypt($row['FName'],'SECUREKEY');
$dec_LName = decrypt($row['LName'],'SECUREKEY');
echo "<tr>";
<echo>"<td>" . $dec_FName . "</td>";
<echo>"<td>" . $dec_LName . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close();
?>
</body>
</html>
我怀疑需要创建一个数组。我很高兴使用JavaScript,PHP或其他你可以推荐的东西。
答案 0 :(得分:1)
这对我来说很好用:
$q3='SELECT users.uid,
users.vr,
users.br,
AES_DECRYPT(users.nm1,"123") AS nm1,
AES_DECRYPT(users.nm2,"123") AS nm2,
AES_DECRYPT(users.nm3,"123") AS nm3,
ussys.ty1,
ussys.ty3
FROM users,ussys WHERE users.uid=ussys.uid
ORDER BY nm1 DESC
';
它在nm1上很好地排序,结果给了我Zack-Willeke-Victor-Roiwan-Plop-Kwab-Krab-Karel-Johannes-Harry-Gerard-Dirk-Cornelis-Bernard-Anton。
答案 1 :(得分:-1)
我认为你不能在SQL服务器上这样做。如果列都是加密的,那么就无法以有意义的方式对列进行排序或过滤。
您需要将数据提取到PHP中并在那里进行排序。一旦解密数据,您就可以使用任何PHP array handling functions或您自己的。{/ p>
显然,对于大型数据集,这变得非常快,因为您需要检索每次使用的所有数据。也许你可以存储一些未加密的数据用于此目的,但显然这是非常具体的安全需求。
答案 2 :(得分:-1)
我知道这篇文章已经很老了,但是我碰到过同样的问题,关于它的信息并不多。这就是我所做的,并且像魔术一样起作用。
SELECT AES_DECRYPT(column1, '%key%') AS 'column1' FROM `myTable` WHERE
1 ORDER BY AES_DECRYPT(column1, '%key%') ASC;
我有一张表,其中包含230行和4列要解密的表以及排序列,要在具有以下规格的VPS VM上重新计算结果需要2.5毫秒:2个Xeon E5 CPU内核,2 GB RAM,50 GB SSD