java-加密、解密算法
rsa2048、sha256
rsa2048对整个文件进行hash算法,生成公钥、私钥后用于数字签名,
sha256通过公钥和私钥,作为证书使用。单板打包后对每个动态库sha256计算颁发证书
sha256签名后,rsa2048进行加密。签名用于校验加密数据没有被更改过
通过JWT(JSON Web Token)进行数字签名
签名方法有两种:
1、RS256对应rsa2028、sha256,是非对称算法(rsa2048公私钥),微服务提供签名信息、其他微服务使用
2、HS256对应
内容主要由三部分构成:

开发代码(依赖项):
io.jsonwebtoken jjwt 0.9.1
// 如果java版本号是java8以后则需要加一下三个依赖,否者上面一个就好
javax.xml.bind jaxb-api
com.sun.xml.bind jaxb-impl 4.0.0
com.sun.xml.bind jaxb-core 4.0.0
加减密实例代码:
package com.xzbd;
import io.jsonwebtoken.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.UUID;@Component
public class JwtUtils {private long time = 1000 * 60 * 60 * 24;private String signature = "admin";public void jwt() {JwtBuilder jwtBuilder = Jwts.builder();String jwtToken = jwtBuilder// header.setHeaderParam("typ", "JWT") // 类型.setHeaderParam("alg", "HS256") // 校验方法// payload.claim("username", "tom") // 用户名.claim("role", "root") // 角色.setSubject("主体").setExpiration(new Date(System.currentTimeMillis() + time)) // 设置有效时间=当前时间+24小时.setId(UUID.randomUUID().toString())// signature.signWith(SignatureAlgorithm.HS256, signature).compact(); // 拼接// 打印签名数据System.out.println(jwtToken);}public void parse() {String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRvbSIsInJvbGUiOiJyb290Iiwic3ViIjoi5Li75L2TIiwiZXhwIjoxNjYwNzI1NTY2LCJqdGkiOiI1MzZkYjllNy01YzViLTQwNzYtOGU4NS01YmU1ODczNzE5ZDcifQ.oO7QUWfa1Np8cdjvpsUDo_tzrXsDj7GrPJZV8UikRzA";JwtParser jwtParser = Jwts.parser();Jws claimsJws = jwtParser.setSigningKey(signature).parseClaimsJws(token);Claims claims = claimsJws.getBody();System.out.println(claims.get("username"));System.out.println(claims.get("role"));System.out.println(claims.getId());System.out.println(claims.getSubject());System.out.println(claims.getExpiration());}
}
main函数中如下:
@SpringBootApplication
public class Run {public static void main(String[] args) {SpringApplication.run(Run.class, args);JwtUtils jwtUtils = new JwtUtils();jwtUtils.jwt();jwtUtils.parse();}
}
运行效果如下,生成数据中对上面描述的三部分有符号“.”隔开
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRvbSIsInJvbGUiOiJyb290Iiwic3ViIjoi5Li75L2TIiwiZXhwIjoxNjYwNzI1NjY3LCJqdGkiOiIzZjNkNDg0OC1iNjVhLTQwMjYtYTZiYi0wMWQ1OGI0MTU5YTQifQ.7pVyC8ICj_vAVBL-nrtFnmyDzut8wbwpoILwXsDzQdw
tom
root
536db9e7-5c5b-4076-8e85-5be5873719d7
主体
Wed Aug 17 16:39:26 CST 2022
Process finished with exit code 0
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
