spring boot使用des算法生成jwt token
来源:互联网 发布:路由器访客网络限速 编辑:程序博客网 时间:2024/06/08 03:41
1.
引入jwt工具包依赖
io.jsonwebtoken
jjwt
0.7.0
2.DesUtil.java
package org.cloud.bank.client.util;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public final class DesUtil {
public static final String DEFAULT_PASSWORD_CRYPT_KEY = "huanghongfei";private static final String DES = "DES";private static Cipher cipher = null;static { // Cipher对象实际完成加密操作 try { cipher = Cipher.getInstance(DES); } catch (Exception e) { e.printStackTrace(); }}private DesUtil() {}public static byte[] encrypt(byte[] src, byte[] key) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密匙数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密匙工厂,然后用它把DESKeySpec转换成 // 一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // 用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); // 正式执行加密操作 return cipher.doFinal(src);}public static byte[] decrypt(byte[] src, byte[] key) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密匙数据创建一个DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成 // 一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, sr); // 正式执行解密操作 return cipher.doFinal(src);}public static String decrypt(String data) { try { return new String(decrypt(hex2byte(data.getBytes()),DEFAULT_PASSWORD_CRYPT_KEY.getBytes())); } catch (Exception e) { e.printStackTrace(); ; } return null;}public static String decrypt(String data, String key) { try { return new String( decrypt(hex2byte(data.getBytes()), key.getBytes())); } catch (Exception e) { e.printStackTrace(); ; } return null;}public static String encrypt(String data) { try { return byte2hex(encrypt(data.getBytes(), DEFAULT_PASSWORD_CRYPT_KEY.getBytes())); } catch (Exception e) { e.printStackTrace(); } return null;}public static String encrypt(String data, String key) { try { return byte2hex(encrypt(data.getBytes(), key.getBytes())); } catch (Exception e) { e.printStackTrace(); ; } return null;}public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) { hs = hs + "0" + stmp; } else { hs = hs + stmp; } } return hs.toUpperCase();}public static byte[] hex2byte(byte[] b) { if ((b.length % 2) != 0) { throw new IllegalArgumentException("长度不是偶数"); } byte[] b2 = new byte[b.length / 2]; for (int n = 0; n < b.length; n += 2) { String item = new String(b, n, 2); b2[n / 2] = (byte) Integer.parseInt(item, 16); } return b2;}
/* public static void main(String[] args) {
String url = “http://hunqijiangzhi.com“;
url = DesUtil.encrypt(url);
System.out.println(url);
System.out.println(DesUtil.decrypt(url));
}*/
}
3.生成jwt token
package org.cloud.bank.client.util;
import java.util.Date;
import java.util.Map;
import org.joda.time.DateTime;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
public class JwtUtil {
/** * token有效时间/天 */private static final int TOKEN_EXPIRATION_DAY=7;/** * token生成器 * @param headerParams 请求头参数列表 * @param claims 请求体参数列表 * @return token */public static String tokenGenerator(Map<String,Object> headerParams,Map<String,Object> bodyParams) { DateTime dt = new DateTime(); Date expiration = dt.plusDays(TOKEN_EXPIRATION_DAY).toDate(); bodyParams.put("expiration",expiration); String token=Jwts.builder() .setHeaderParams(headerParams) .setClaims(bodyParams) .signWith(SignatureAlgorithm.HS256, DesUtil.DEFAULT_PASSWORD_CRYPT_KEY) .compact();; return token;}
}
- spring boot使用des算法生成jwt token
- Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(json web token) 用户发送按照约定,向服务端发送 Header、Payload 和 Signature,
- Spring Session 整合 JWT Token
- Spring Boot中使用使用Spring Security和JWT
- angular 使用jwt token验证
- 使用JWT保护你的Spring Boot应用
- JWT Token
- JWT token
- JWT token心得与使用实例
- android 中使用jwt token(json web token)--java
- 重拾后端之Spring Boot(四):使用JWT和Spring Security保护REST API
- 重拾后端之Spring Boot(四):使用JWT和Spring Security保护REST API
- spring boot security oauth2 jwt 服务端实现
- Spring Boot实战之Filter实现使用JWT进行接口认证
- Spring Boot实战之Filter实现使用JWT进行接口认证
- spring安全验证之jwt(json web token)实践
- Spring Security + JWT 实现基于Token的安全验证
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
- jquery.contextMenu 鼠标右键
- 常用命令
- 愚人节的礼物(HDU1870)
- Docker中使用Tomcat并部署war工程
- py faster rcnn caffe模块编译时报cudnn错误
- spring boot使用des算法生成jwt token
- 2017 日照夏令营 day5 t2 tree
- jquery实现table的冻结列
- androidstudio配置和使用greenDao3.2.2遇到的坑!!!
- hive启动后,进入命令行界面报错${system:java.io.tmpdir}相关的,解决方法
- 单调队列--滑动窗口
- Spring Boot 同一账号只允许一次登陆
- DBUtils和连接池的笔记和总结
- SQL查询语句整理集合