如何使用 Hibernate 加密数据以防止访问列值

Mr *_*edi 5 java encryption hibernate

我使用 Hibernate 开发了一个 Java Web 服务来连接数据库。用户将存储任何人都不应直接访问的数据,即使是从数据库中也是如此。

是否有可能为每个用户生成一个加密/解密数据库中数据的密钥。如何在一组用户之间共享访问权限?

如何使用 Hibernate 做到这一点?

Mar*_*tör 3

至于通过Hibernate在数据库中存储加密内容我建议你花一些时间研究一下Hibernate对数据库的加密对应用程序完全透明。它提出了多种选择:

  • 使用 JDBC-over-SSL 而不是普通的 JDBC 连接(应用程序和数据库之间没有流量嗅探)
  • 使用TrueCrypt之类的工具来加密存储数据的硬盘,而不是加密数据库中的特定内容
  • 使用自定义 HibernateUserType来动态加密/解密数据(即而不是String使用EncryptedString

前两个通常优于您似乎尝试的原因是另一个问题的引用

请记住,任何带有客户端加密的解决方案都会使您的所有数据库数据在客户端之外无法使用,即您将无法使用 jdbc 客户端或 MySQL 查询浏览器等不错的工具。

但是,如果仍然想使用自定义 Hibernate 动态加密/解密数据,UserType我建议评估提供此类类型的Jasypt Hibernate 集成。