Php 对加密的MySQL表进行排序和查询

Php 对加密的MySQL表进行排序和查询,php,mysql,sorting,encryption,Php,Mysql,Sorting,Encryption,2关于MySQL表中加密/解密值的查询 1) 我怎样才能对这些值进行排序,因为值是按顺序加密的,所以排序是不正确的,JavaScript根本不会对a)和b)进行正确排序。下面的代码,请原谅格式化 2) 我如何查询“值之间” 提前谢谢 <html> <body> <table> <tr> <?php // Connects to Server, queries all on that table. $db_connect=my

2关于MySQL表中加密/解密值的查询

1) 我怎样才能对这些值进行排序,因为值是按顺序加密的,所以排序是不正确的,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或任何您可以推荐的工具。

我认为您无法在SQL server中实现这一点。如果列都是加密的,它就无法以有意义的方式对列进行排序或筛选

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


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

这对我来说很好:

$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上排列得很好,给了我扎克·威勒克·维克托·罗万·普洛普·夸布·克拉布·卡雷尔·约翰尼斯·哈里·杰拉德·德克·科内利斯·伯纳德·安东的印象。

我知道这篇文章很老了,但我遇到了同样的问题,关于这方面的信息并不多。这就是我所做的,它就像魔术一样

 SELECT AES_DECRYPT(column1, '%key%') AS 'column1' FROM `myTable` WHERE
 1 ORDER BY AES_DECRYPT(column1, '%key%') ASC;
我有一个包含230行和4列的表要解密,加上排序列,在VPS虚拟机上用这些规格重新获得结果需要2.5毫秒:2个Xeon E5 CPU内核、2 Gb RAM、50 GBs SSD