我想在创建用户后加密我的密码并将其保存在数据库中。我将密码写入“密码字段”,然后按“保存按钮”。然后我使用this library
用于加密
BasicPasswordEncryptor passwordEncryptor = new BasicPasswordEncryptor();
String encryptedPasword = passwordEncryptor.encryptPassword(myPasword);
user = new User();
user.setUsername(username);
user.setUserRole(role);
user.setFistname(firstname);
user.setLastname(lastname);
user.setGroupId(group);
user.setBssLogin(login);
user.setBssPassword(encryptedPasword);
dao.addCrmUser(user);
之后,我的数据库中有一个新的加密密码。
在服务器端,我找到了用户并尝试解密密码
String login = user.getLogin();
String password = user.getPassword();
String dencryptPassword = encryptor.**NOT_METHOD_FOR_IT**(password);
我需要原始密码,该密码设置在另一个系统中。 如何使用我当前的库?
我在Github中使用this和另一个库使用了一些key
,但我不知道什么是更好和/或更快。
答案 0 :(得分:0)
您不会从数据库中解密密码以进行验证。
您加密在尝试登录时从用户收到的密码,并将该加密值与数据库中的值进行比较。为了安全起见,良好的密码加密实际上是一个哈希函数,这是不可逆的。
答案 1 :(得分:0)
jasypt 中的BasicPasswordEncryptor()
尽管名称不对,但不加密密码,但使用单向哈希对密码进行哈希处理(很明显,方法是' t需要加密密钥)。
此过程后您无法获取密码,并使用checkPassword(String plainPassword, String encryptedPassword)
方法验证密码。
如果您确实需要能够解密密码,则需要使用其他方法在加密时执行真实加密。这提出了处理加密密钥的需要,加密密钥可能引入的问题与排序(存储它们的位置等)一样多。