加密字段上的 MySQL 索引

标签 mysql indexing aes

有没有一种方法可以加密数据库中的字段,并且仍然有有用的索引?

例如,在医疗领域,您需要对患者信息进行加密。如果我在患者姓名字段上执行此操作,有没有办法仍然能够在解密值上建立索引?

我正在考虑在该字段上使用 AES_ENCRYPT(),但我真的很想知道是否有一个技巧可以对解密的值进行索引,而不是对字段的值(哪个将被加密)。

最佳答案

AES_ENCRYPT()AES_DECRYPT() 是函数。所以更笼统的问题是:

Can MySQL do indexing on functions?

MySQL 5.6 开始,答案是否定的,尽管您可以在其他 sql 引擎中看到这一点。例如 oracle8i 以来就已经做到了,而 MS SQL2000 以来就做到了。

看起来这在 Maria DB 5.2 ( https://mariadb.com/kb/en/mariadb/virtual-computed-columns/ ) 中是可能的,它是 MySQL 的社区版本分支。

引用资料:

关于加密字段上的 MySQL 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955990/

相关文章:

mysql - 为什么在MySQL中添加新索引时,索引的基数没有变化?

java.security.spec.InvalidKeySpecException : java. security.InvalidKeyException : IOException : DER input, 整数标记错误

php - MYSQL 与图像一起使用?

mysql - MySQL是如何存储数据的

mysql - 当 WHERE 子句的内容发生变化时,如何确定最佳的 MySQL 表索引?

mysql - NULL 用作索引键而不是 MySQL 数据库中可能的键

android - 由于 JIT,BouncycaSTLe AES 256 多线程解密速度下降

Vb.net 到 golang AES

mysql - mysql的where子句 Node 没有返回结果集?

Mysql 三表连接同时连接一列?