我们正在使用带有数据库 SQL Server 2005 的 Spring 3.1.2 和 Hibernate 4.1.7 开发 Web 应用程序。
在一个表上,我们已经加密了一个列,我们需要执行一些查询,例如,这个:
OPEN SYMMETRIC KEY PasswordFieldSymmetricKey
DECRYPTION BY PASSWORD = 'myPassword'
SELECT id,
plain,
cipher,
CONVERT(varchar(50),
DecryptByKey(cipher)) AS 'Decrypted'
FROM TS_OWN.cryptest;
GO
CLOSE SYMMETRIC KEY PasswordFieldSymmetricKey
作为一种解决方案,有人提议创建一个管理解密的视图,但我们需要没有人必须看到解密的数据,当然 DBA 可以查询该视图。
同时我们不想在java端执行解密,因为一些繁重的聚合逻辑,由于性能原因,预计将由数据库引擎执行。
一种可能的解决方案是创建一个执行解密、聚合然后再次加密结果的视图,在 Java 端执行聚合值的解密。
有人知道替代品吗?
谢谢大家, 卢卡