加解密添加
This commit is contained in:
parent
e4effd6b3c
commit
08e61e3318
|
|
@ -17,11 +17,11 @@
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!-- spring-boot-devtools -->
|
<!-- spring-boot-devtools -->
|
||||||
<dependency>
|
<!-- <dependency>-->
|
||||||
<groupId>org.springframework.boot</groupId>
|
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||||
<artifactId>spring-boot-devtools</artifactId>
|
<!-- <artifactId>spring-boot-devtools</artifactId>-->
|
||||||
<optional>true</optional> <!-- 表示依赖不会传递 -->
|
<!-- <optional>true</optional> <!– 表示依赖不会传递 –>-->
|
||||||
</dependency>
|
<!-- </dependency>-->
|
||||||
|
|
||||||
<!-- swagger3-->
|
<!-- swagger3-->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
||||||
|
|
@ -43,10 +43,9 @@ public class SysLoginController
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/sendPhone")
|
@PostMapping("/sendPhone")
|
||||||
public AjaxResult sendPhone(@RequestBody String phone) {
|
public AjaxResult sendPhone(@RequestBody LoginBody loginBody) {
|
||||||
// 下发短信
|
// 下发短信
|
||||||
AjaxResult ajax= loginService.sendPhone(phone);
|
return loginService.sendPhone(loginBody.getUsername());
|
||||||
return ajax;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -62,8 +61,6 @@ public class SysLoginController
|
||||||
String token;
|
String token;
|
||||||
AjaxResult ajax = AjaxResult.success();
|
AjaxResult ajax = AjaxResult.success();
|
||||||
if("2".equals(loginBody.getLoginType())){
|
if("2".equals(loginBody.getLoginType())){
|
||||||
|
|
||||||
|
|
||||||
token = loginService.login(loginBody.getUsername(), loginBody.getCode());
|
token = loginService.login(loginBody.getUsername(), loginBody.getCode());
|
||||||
}else{
|
}else{
|
||||||
token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
||||||
|
|
|
||||||
|
|
@ -43,4 +43,6 @@ public class CacheConstants
|
||||||
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
|
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
|
||||||
|
|
||||||
public static final String PHONE_CODE = "phone_code:";
|
public static final String PHONE_CODE = "phone_code:";
|
||||||
|
|
||||||
|
public static final String PHONE_NUM = "phone_num:";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,12 @@ import cn.hutool.core.util.HexUtil;
|
||||||
import cn.hutool.crypto.Mode;
|
import cn.hutool.crypto.Mode;
|
||||||
import cn.hutool.crypto.Padding;
|
import cn.hutool.crypto.Padding;
|
||||||
import cn.hutool.crypto.symmetric.SM4;
|
import cn.hutool.crypto.symmetric.SM4;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author bonus
|
* @author bonus
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public class Sm4Utils {
|
public class Sm4Utils {
|
||||||
/**
|
/**
|
||||||
* 必须是16字节
|
* 必须是16字节
|
||||||
|
|
@ -29,6 +31,7 @@ public class Sm4Utils {
|
||||||
// 返回带盐的加密结果(Hex编码)
|
// 返回带盐的加密结果(Hex编码)
|
||||||
return HexUtil.encodeHexStr(encryptedData);
|
return HexUtil.encodeHexStr(encryptedData);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
log.error(e.toString(),e);
|
||||||
return plainText; // 发生异常时返回传入字符串
|
return plainText; // 发生异常时返回传入字符串
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -47,13 +50,14 @@ public class Sm4Utils {
|
||||||
byte[] decryptedData = sm4.decrypt(cipherText);
|
byte[] decryptedData = sm4.decrypt(cipherText);
|
||||||
return new String(decryptedData);
|
return new String(decryptedData);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return cipherText; // 发生异常时返回传入字符串
|
log.error(e.toString(),e);
|
||||||
|
return null; // 发生异常时返回传入字符串
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 测试方法,演示加密和解密过程
|
// 测试方法,演示加密和解密过程
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
String plainText = "15398187429";
|
String plainText = "18226653236";
|
||||||
System.out.println("原文: " + plainText);
|
System.out.println("原文: " + plainText);
|
||||||
|
|
||||||
// 加密明文
|
// 加密明文
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,7 @@ public class SysLoginService
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String login(String phone, String code) {
|
public String login(String phone, String code) {
|
||||||
|
phone= Sm4Utils.decrypt(phone);
|
||||||
if(StringUtils.isEmpty(phone)){
|
if(StringUtils.isEmpty(phone)){
|
||||||
throw new ServiceException("请输入正确的手机号!");
|
throw new ServiceException("请输入正确的手机号!");
|
||||||
}
|
}
|
||||||
|
|
@ -237,6 +238,15 @@ public class SysLoginService
|
||||||
ajax.put("msg", "手机号不存在或手机号不正确");
|
ajax.put("msg", "手机号不存在或手机号不正确");
|
||||||
return ajax;
|
return ajax;
|
||||||
}
|
}
|
||||||
|
Integer num=redisCache.getCacheObject(CacheConstants.PHONE_NUM+phone);
|
||||||
|
if(num==null){
|
||||||
|
num=1;
|
||||||
|
}else{
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
if(num>10){
|
||||||
|
return AjaxResult.error("请勿频繁发送验证码!");
|
||||||
|
}
|
||||||
StringBuilder sb=new StringBuilder();
|
StringBuilder sb=new StringBuilder();
|
||||||
String code=getSixBitCode();
|
String code=getSixBitCode();
|
||||||
sb.append("【博诺思】验证码:").append(code).append(",验证码有效期").append(TIMES).append("分钟,切勿将验证码泄漏于他人。");
|
sb.append("【博诺思】验证码:").append(code).append(",验证码有效期").append(TIMES).append("分钟,切勿将验证码泄漏于他人。");
|
||||||
|
|
@ -246,6 +256,7 @@ public class SysLoginService
|
||||||
if ("200".equals(map.get("code"))){
|
if ("200".equals(map.get("code"))){
|
||||||
AjaxResult ajax = AjaxResult.success();
|
AjaxResult ajax = AjaxResult.success();
|
||||||
redisCache.setCacheObject(CacheConstants.PHONE_CODE+phone,code,TIMES, TimeUnit.MINUTES);
|
redisCache.setCacheObject(CacheConstants.PHONE_CODE+phone,code,TIMES, TimeUnit.MINUTES);
|
||||||
|
redisCache.setCacheObject(CacheConstants.PHONE_NUM+phone,num,5, TimeUnit.MINUTES);
|
||||||
ajax.put("times", TIMES);
|
ajax.put("times", TIMES);
|
||||||
ajax.put("msg", "发送成功");
|
ajax.put("msg", "发送成功");
|
||||||
return ajax;
|
return ajax;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue