【发布时间】:2014-12-25 19:44:45
【问题描述】:
我正在 Netbeans 上使用 MySQL 和 Java Persistence API 开发一个 Web 应用程序。该应用程序需要用户创建一个要使用的帐户,我正在尝试在存储到数据库之前加密密码。问题是,在我的 SQL 脚本中,我将存储密码的用户帐户表设置为大小限制为 256 的字符串,并自动生成 JPA 实体类。如果我正常存储密码,这不会产生问题,但是每当我尝试加密密码时问题就会出现。这是我最初拥有的:
import org.netbeans.lib.uihandler.PasswdEncryption;
public void encryptPassword(String password)
{
String encryptedPassword = PasswdEncryption.encrypt(password);
storeIntoDatabase(password);
}
但是,每当我尝试创建新帐户时,我都会收到由 javax.ConstraintViolationException 引起的 EJBExcepton。
我发现 PasswdEncryption.encrypt 正在创建一个大于 256 的字符串,我认为这是导致异常的原因。我首先尝试修改我的原始 SQL 脚本以增加密码条目大小并运行它,但我仍然遇到同样的问题,因为实体类约束仍然是 256。所以我的问题是
- 有没有办法改变约束而不必再次自动生成?
- 或者创建一个大小为 256 或更小的加密字符串?
【问题讨论】:
-
“我正在尝试加密密码”。停在那儿。密码应该是散列,而不是加密,否则您将失去不可否认性的合法财产,简单地说,这可能会使您的公司破产。不要这样做。另请参阅this question。
标签: java mysql jpa encryption netbeans