0

关于 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 或您可以推荐的任何其他东西。

4

3 回答 3

2

这对我来说很好:

$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。

于 2013-03-21T08:48:01.923 回答
-1

我认为您不能在 SQL 服务器中执行此操作。如果列全部加密,则无法以有意义的方式对列进行排序或过滤。

您需要将数据拉入您的 PHP 并在那里进行排序。解密数据后,您将能够使用 PHP 的任何数组处理函数或您自己的函数。

显然,对于大型数据集,这变得非常快速,因为您需要为每次使用检索所有数据。也许您可以为此目的存储一些未加密的数据,但显然这非常适合您的安全需求。

于 2012-05-04T10:29:19.107 回答
-1

我知道这篇文章已经很老了,但是我遇到了同样的问题,并且没有太多关于此的信息。这就是我所做的,它就像魔术一样工作。

 SELECT AES_DECRYPT(column1, '%key%') AS 'column1' FROM `myTable` WHERE
 1 ORDER BY AES_DECRYPT(column1, '%key%') ASC;

我有一个包含 230 行和 4 列的表来解密以及排序列,它需要 2.5 毫秒才能在具有以下规格的 VPS VM 上重新获得结果:2 个 Xeon E5 CPU 内核、2 GB 的 RAM、50 GB 的 SSD。

于 2020-06-22T23:42:44.177 回答