JPA、mysql中的简单加密(用户名-密码)
我对Java加密一无所知,需要您的帮助。我想用mysql和JPA entity UserRecord实现一个简单的登录系统:JPA、mysql中的简单加密(用户名-密码),mysql,jpa,encryption,Mysql,Jpa,Encryption,我对Java加密一无所知,需要您的帮助。我想用mysql和JPA entity UserRecord实现一个简单的登录系统: @Entity public class UserRecord implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
@Entity
public class UserRecord implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(unique=true)
private String username;
private String password;
现在,什么是最好的保密方法?我认为,我必须加密密码,并在将输入与数据库记录进行比较时设法解密密码。在JPA中有没有一些特殊的方法来实现这一点?我不想创造任何困难,它只是为了我的学习问题。唯一的要求是:必须用盐腌制(?)。请你给我提个建议好吗
非常感谢 密码必须在数据库中加密。。。最好是不能解密它!这意味着在加密密码时,您必须丢失一些信息,以便无法从其加密形式计算原始密码。(有很多算法可以做到这一点,比如,…)。 () 使用salt意味着您将在用户创建其帐户时向密码附加一个随机字符串(即salt)。您将把这个随机字符串存储在用户表中(就像加密的密码一样) 要在登录时验证用户密码,请执行以下操作:
- 查找为尝试登录的用户生成的salt
- 在
password+salt
- 将结果与数据库中存储的加密密码进行比较:如果匹配,则密码正确
顺便说一句:这个问题与JPA无关。AFAIK:JPA规范中没有与加密相关的内容。密码必须在数据库中加密。。。最好是不能解密它!这意味着在加密密码时,您必须丢失一些信息,以便无法从其加密形式计算原始密码。(有很多算法可以做到这一点,比如,…)。 () 使用salt意味着您将在用户创建其帐户时向密码附加一个随机字符串(即salt)。您将把这个随机字符串存储在用户表中(就像加密的密码一样) 要在登录时验证用户密码,请执行以下操作:
- 查找为尝试登录的用户生成的salt
- 在
password+salt
- 将结果与数据库中存储的加密密码进行比较:如果匹配,则密码正确