对加密列进行排序有哪些不同的方法?

SVA*_*VAN 4 mysql sorting encryption

我在 MySQL 中有一个 AES 加密列,我想对其进行排序并对结果进行分页。

我正在遍历每一行并将其添加到数组中。然后我对数组进行排序。当行数超过 10K 时,这会变得非常慢。

我正在考虑添加一个额外的列并添加从 0-##### 的顺序,但我看到的问题是每次在中间插入一行时我都必须更新顺序。

我只是想集思广益,看看是否有人有这方面的经验。

谢谢

Dre*_*rew 5

模式

-- drop table encryptIt;
create table encryptIt
(   id int auto_increment primary key,
    ciphertext blob not null
);
Run Code Online (Sandbox Code Playgroud)

按原样从 PHP 加密到它,或者参见这个答案

现在是时候直接从 mysql 进行分页了,无需 PHP 循环和排序。假设你把秘密给your_key了 mysql。假设您可以获得基本计数,从而知道您的页数(每页为 25 页)。

SELECT id,CAST(AES_DECRYPT(ciphertext,'your_key') AS CHAR) AS cleartext
FROM encryptIt
order by cleartext
limit 0,25; -- start at first block of 25, bring back 25
-- limit 2,25; -- start at 3rd block of 25, bring back 25
Run Code Online (Sandbox Code Playgroud)

使用 order by 和 limit 来应用正常分页。

遵循最佳实践的密钥管理。一个模糊的评论,但我把它扔在那里。