Java 如何防止重新生成密码?

Java 如何防止重新生成密码?,java,spring,hibernate,encryption,Java,Spring,Hibernate,Encryption,我使用Hibernate注释来加密密码 @ColumnTransformer(write = "crypt(?, gen_salt(...))") private String password; 但是在更新了我在重新生成密码的日志中看到的实体之后 password=crypt('$2a$... 如何在保存对象时防止此字段再次加密?这里有两种可能的解决方案,我猜您应该选择第二种: 或者出于某种原因需要清除密码,然后应该在表read上使用“decrypt”语句,请参阅 或者,您只需要检查用户

我使用Hibernate注释来加密密码

@ColumnTransformer(write = "crypt(?, gen_salt(...))")
private String password;
但是在更新了我在重新生成密码的日志中看到的实体之后

 password=crypt('$2a$...

如何在保存对象时防止此字段再次加密?

这里有两种可能的解决方案,我猜您应该选择第二种:

或者出于某种原因需要清除密码,然后应该在表read上使用“decrypt”语句,请参阅

或者,您只需要检查用户是否发送了正确的密码,并且应该使用散列函数而不是加密。请参阅。

使用该配置


@Column(name=“password”,nullable=false,updateable=false)

保留现有密码的列表,并将生成的所有密码存储在thre中。您的问题缺少详细信息。在更新之前,密码的内容是什么?您的salt在两次迭代之间是否相同?@Lou_在第一次保存时,密码包含散列值,在更新时,它将替换为先前散列值的散列值。盐能让Sameun保持清醒。你用这个密码干什么?用户身份验证?@Lou是,是的,用于用户身份验证