gpt4 book ai didi

java - 嵌套的 json JWT nimbus-jose -jwt 库

转载 作者:行者123 更新时间:2023-11-29 04:55:32 27 4
gpt4 key购买 nike

我正在尝试按照此处提供的示例创建嵌套的 json JWT http://connect2id.com/products/nimbus-jose-jwt/examples/signed-and-encrypted-jwt

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.*;
import com.nimbusds.jwt.*;


// Generate 256-bit AES key for HMAC as well as encryption
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(256);
SecretKey secretKey = keyGen.generateKey();

// Create HMAC signer
JWSSigner signer = new MACSigner(secretKey.getEncoded());

// Prepare JWT with claims set
JWTClaimsSet claimsSet = new JWTClaimsSet();
claimsSet.setSubject("alice");
claimsSet.setIssueTime(new Date());
claimsSet.setIssuer("https://c2id.com");

SignedJWT signedJWT = new SignedJWT(new JWSHeader(JWSAlgorithm.HS256), claimsSet);

// Apply the HMAC
signedJWT.sign(signer);

// Create JWE object with signed JWT as payload
JWEObject jweObject = new JWEObject(
new JWEHeader.Builder(JWEAlgorithm.DIR, EncryptionMethod.A256GCM)
.contentType("JWT") // required to signal nested JWT
.build(),
new Payload(signedJWT));

// Perform encryption
jweObject.encrypt(new DirectEncrypter(secretKey.getEncoded()));

// Serialise to JWE compact form
String jweString = jweObject.serialize();

我遇到的问题是生成的 jweString 没有正确出现

eyJhbGc.
.6Ne
.tw8z

我得到 4 个部分而不是 3 个部分,并且有一个空部分

 eyJhbGc.
.6Ne

最佳答案

JWE 的一般格式有五个部分,<Header>.<EncryptedKey>.<InitializationVector>.<Ciphertext>.<AuthenticationTag> .在某些情况下,例如使用示例中的直接加密,没有加密 key 并且该部分留空。所以你应该得到一个包含五个部分的 JWE,其中一个部分是空的,看起来像 eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..PVEd_V4E8qyppt6u.UOLp2qTNMw3iA9tyTEDHeJAdTczzI5uP4BkXHQSC6U73kywATBbvdWqz9nilsSWr1y-E1duTMvRL7hzDyyWPMZnpfnCWsjhzZtTnd22HODMWUpU.CoQq987RvHGIN5D6HhrjiQ

关于java - 嵌套的 json JWT nimbus-jose -jwt 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com