java jwt非对称加密
时间: 2024-01-24 22:15:54 浏览: 104
在Java中使用JWT进行非对称加密可以通过使用jsonwebtoken库中的Jwts类来实现。下面是一个示例代码:
```java
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Date;
public class JwtExample {
public static void main(String[] args) throws Exception {
// 生成RSA密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// 创建JWT并设置过期时间
String jwt = Jwts.builder()
.setSubject("user123")
.setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 设置过期时间为1小时
.signWith(SignatureAlgorithm.RS256, privateKey)
.compact();
// 解密JWT
String subject = Jwts.parserBuilder()
.setSigningKey(publicKey)
.build()
.parseClaimsJws(jwt)
.getBody()
.getSubject();
System.out.println("JWT: " + jwt);
System.out.println("Decoded Subject: " + subject);
}
}
```
这个示例代码使用RSA算法生成了一个密钥对,然后使用私钥对JWT进行签名,设置了过期时间为1小时。接着使用公钥对JWT进行解密,获取到JWT中的主题信息。
阅读全文