JPA + MySql +实现加密密码

当我为网站构建登录名时,我想以安全的方式在MySQL中存储自动生成的密码,从而以某种方式对其进行加密。但是我不确定如何将自动生成与加密密码结合起来。

我看了很多问题,但考虑到它应该自动生成,没有一个真正帮助我或回答了我的问题。我也想以一种优雅的方式解决它,如果可能的话,不要进行硬编码和填充。如果我是初学者,如果有人可以帮助我,我将非常高兴,在此先感谢!

题:

如何自动生成安全的加密密码,什么数据类型 我应该在Java(当前为String)中使用,然后在哪种数据库类型中使用 它被映射了吗?
如何确保我可以解密数据库的密码,以便在有人登录时检查数据库的密码是否匹配?

用户实体:

@Entity
public class User {

    @Id
    @GeneratedValue
    private Integer user_id;
    
    @Column(unique = true)
    private String username;
    
    private String password;
    
    @Enumerated(EnumType.STRING)
    private Role role;
    
    //non-Owning (address) side of the OneToOne relationship
    @OneToOne(mappedBy = "user")
    private RetailStore retailStore;

    /**
     * Constructor
     */
    protected User() {
        
    }
    
    /**
     * Constructor
     * @param username
     * @param role
     */
    public User(String username, String password, Role role) {
        super();
        this.username = username;
        this.password = password;
        this.role = role;
    }

用户存储库:

@Repository
@Transactional
//necessary to be in an transaction to change something in database, 
//instead of doing this for every method itself it is declared by 
//the annotation @Transactional
public interface UserRepository extends JpaRepository<User, Long>{
    
}