令牌工具类(Jwt)和 Md5随机盐值加密
public class JwtUtils {
private static final long EXPIRE_DATE=30*60*1000;
//token秘钥
private static final String TOKEN_SECRET = "qianggezainaliwyywyasdaDQWCWQ%5ASAACACAssdsdsbalgda";
/**
* 生成token
* @param username
* @param userId
* @return
*/
public static String token (Integer userId,String username){
String token = "";
try {
//过期时间
Date date = new Date(System.currentTimeMillis()+EXPIRE_DATE);
//秘钥及加密算法
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
//设置头部信息
Map<String,Object> header = new HashMap<>();
header.put("typ","JWT");
header.put("alg","HS256");
//携带username,password信息,生成签名
token = JWT.create()
.withHeader(header)
.withClaim("username",username)
.withClaim("userId",userId)
.withExpiresAt(date)
.sign(algorithm);
}catch (Exception e){
e.printStackTrace();
return null;
}
return token;
}
/**
* 校验
* @param token
* @return
*/
public static boolean verify(String token){
/**
* @desc 验证token,通过返回true
* @params [token]需要校验的串
**/
try {
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
public static User parse(String token){
DecodedJWT decodedJWT = JWT.decode(token);
Map<String, Claim> claims = decodedJWT.getClaims();
String username = claims.get("username").asString();
Integer userId = claims.get("userId").asInt();
User admin = new User();
admin.setId(userId);
admin.setUsername(username);
return admin;
}
public static void main(String[] args) {
String token = token(10,"zs");
System.out.println(token);
//
// //eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6IuayoeaciSIsInBob25lIjoiMTEwIiwiZXhwIjoxNjI1MDE4MTA5LCJ1c2VybmFtZSI6ImFsZyJ9.jMj6tR9h9QHxPEVQ23Ph3J1zLi7Fe3xcArAywee5EH0
// System.out.println(token);
//
// //验签
// boolean isLogin= verify("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6IuayoeaciSIsInBob25lIjoiMTEwIiwiZXhwIjoxNjI1MDE4MTA5LCJ1c2VybmFtZSI6ImFsZyJ9.jMj6tR9h9QHxPEVQ23Ph3J1zLi7Fe3xcArAywee5EH0");
//
// System.out.println(isLogin);
}
}
MD5加密工具类
public class Md5Utils {
/**
* 生成盐
* @return
*/
public static String crateSalt() {
return UUID.randomUUID().toString();
}
/**
* 加密操作
* @param password 明文
* @param salt 调料
* @return 加密后的密码
*/
public static String md5Password(String password,String salt) {
try {
//1.获取md5加密算法
MessageDigest digest = MessageDigest.getInstance("md5");
//2.加密密码
byte[] md5 = digest.digest((password+salt).getBytes());
//3.Base64进行编码
byte[] encoder = Base64.getEncoder().encode(md5);
return new String(encoder);
}catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("加密失败!");
}
}
public static void main(String[] args) {
String salt = crateSalt();
System.out.println(salt);
String pwd = md5Password("ls", salt);
System.out.println(pwd);
}
}
json工具类(jackson依赖)
public class JsonUtils {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 将json结果集转化为对象
*
* @param jsonData json数据
* @param clazz 对象中的object类型
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将json数据转换成pojo对象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonData
* @param beanType
* @return
*/
public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Result result = new Result();
result.setCode(200);
result.setMsg("成功了...");
//转成json
// String str = "{\"code\":200,\"msg\":\"成功了...\"}";
// String str = "{\"code\":200,\"msg\":\"成功了...\",\"count\":null,\"data\":null}";
//工具类专门转换
String str = JsonUtils.objectToJson(result);
System.out.println(str);
Result re = JsonUtils.jsonToPojo(str, Result.class);
System.out.println(re.getMsg());
}
}