【7.6.0】【sys】【auth】更新加密接口,增加两个对加盐密码的操作方式

pull/57/head
fengshuonan 2023-06-25 08:55:58 +08:00
parent 6492daeadf
commit 1af9fe733a
3 changed files with 68 additions and 0 deletions

View File

@ -24,6 +24,8 @@
*/ */
package cn.stylefeng.roses.kernel.auth.api.password; package cn.stylefeng.roses.kernel.auth.api.password;
import cn.stylefeng.roses.kernel.auth.api.pojo.password.SaltedEncryptResult;
/** /**
* api * api
* *
@ -42,6 +44,16 @@ public interface PasswordStoredEncryptApi {
*/ */
String encrypt(String originPassword); String encrypt(String originPassword);
/**
* +
*
* @param originPassword
* @return
* @author fengshuonan
* @since 2023/6/25 8:49
*/
SaltedEncryptResult encryptWithSalt(String originPassword);
/** /**
* *
* *
@ -52,4 +64,12 @@ public interface PasswordStoredEncryptApi {
*/ */
Boolean checkPassword(String encryptBefore, String encryptAfter); Boolean checkPassword(String encryptBefore, String encryptAfter);
/**
* +
*
* @author fengshuonan
* @since 2023/6/25 8:51
*/
Boolean checkPasswordWithSalt(String encryptBefore, String passwordSalt, String encryptAfter);
} }

View File

@ -0,0 +1,24 @@
package cn.stylefeng.roses.kernel.auth.api.pojo.password;
import lombok.Data;
/**
*
*
* @author fengshuonan
* @since 2023/6/25 8:48
*/
@Data
public class SaltedEncryptResult {
/**
*
*/
private String encryptPassword;
/**
*
*/
private String passwordSalt;
}

View File

@ -24,9 +24,12 @@
*/ */
package cn.stylefeng.roses.kernel.auth.password; package cn.stylefeng.roses.kernel.auth.password;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.BCrypt; import cn.hutool.crypto.digest.BCrypt;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.auth.api.pojo.password.SaltedEncryptResult;
/** /**
* BCrypt * BCrypt
@ -45,9 +48,30 @@ public class BcryptPasswordStoredEncrypt implements PasswordStoredEncryptApi {
return BCrypt.hashpw(originPassword, BCrypt.gensalt()); return BCrypt.hashpw(originPassword, BCrypt.gensalt());
} }
@Override
public SaltedEncryptResult encryptWithSalt(String originPassword) {
SaltedEncryptResult saltedEncryptResult = new SaltedEncryptResult();
// 创建密码盐
String salt = RandomUtil.randomString(8);
saltedEncryptResult.setPasswordSalt(salt);
// 将原密码进行md5加密
String encryptAfter = SecureUtil.md5(originPassword + salt);
saltedEncryptResult.setEncryptPassword(encryptAfter);
return saltedEncryptResult;
}
@Override @Override
public Boolean checkPassword(String encryptBefore, String encryptAfter) { public Boolean checkPassword(String encryptBefore, String encryptAfter) {
return BCrypt.checkpw(encryptBefore, encryptAfter); return BCrypt.checkpw(encryptBefore, encryptAfter);
} }
@Override
public Boolean checkPasswordWithSalt(String encryptBefore, String passwordSalt, String encryptAfter) {
return SecureUtil.md5(encryptBefore + passwordSalt).equals(encryptAfter);
}
} }