有没有一种方法可以加密数据库中的字段,并且仍然有有用的索引?
例如,在医疗领域,您需要对患者信息进行加密。如果我在患者姓名字段上执行此操作,有没有办法仍然能够在解密值上建立索引?
我正在考虑在该字段上使用 AES_ENCRYPT()
,但我真的很想知道是否有一个技巧可以对解密的值进行索引,而不是对字段的值(哪个将被加密)。
最佳答案
AES_ENCRYPT()
和 AES_DECRYPT()
是函数。所以更笼统的问题是:
Can MySQL do indexing on functions?
从 MySQL 5.6
开始,答案是否定的,尽管您可以在其他 sql 引擎中看到这一点。例如 oracle
自 8i
以来就已经做到了,而 MS SQL
自 2000
以来就做到了。
看起来这在 Maria DB 5.2
( https://mariadb.com/kb/en/mariadb/virtual-computed-columns/ ) 中是可能的,它是 MySQL 的社区版本分支。
引用资料:
关于加密字段上的 MySQL 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955990/