0

我有一个带有 JPA 的 java 应用程序,我正在使用 oracle DB。实体的一个属性在保存到数据库之前需要加密。我正在使用应用程序加密,Base64。我有一个根据此属性搜索实体的命名查询。现在由于加密,我需要首先加密来自应用程序的值并在数据库中搜索加密值,但查询找不到具有此值的实体。

具有加密值的命名查询是否存在问题?有解决方案吗?

谢谢

4

1 回答 1

0

有几件事,Base64 是编码而不是加密,因此不是隐藏数据的安全方式。除非您在 base64 编码之前使用其他东西对其进行加密,否则您可能想要更改它。

数据库不应该有问题,它应该像对待任何其他字符串一样对待它。虽然在数据库字段长度小于存储加密字符串所需的长度之前我遇到过这个问题。

手动签入数据库,以防在您插入密码时它被截断。还要在 SQL 客户端中运行测试以确保它的行为异常,如果它在 SQL 客户端中运行,则您的应用程序没有向数据库发送正确的值(或基于其他字段将其过滤掉)

于 2013-05-01T16:22:34.780 回答