无法解析 nimbus-jose-jwt 库中的符号 'encrypt'
Cannot resolve symbol 'encrypt' in nimbus-jose-jwt library
我正在尝试使用 'nimbus-jose-jwt' 库在 Android 中生成加密的 JWT。但是当我调用库的方法'encrypt()
'时,我得到错误'Cannot resolve symbol 'encrypt'
,即使库的源代码有我指定的对象的方法'encrypt()'。
这是我的代码:
public class EncryptedJWTGenerator {
public EncryptedJWTGenerator() throws NoSuchAlgorithmException, JOSEException {
}
JWEAlgorithm alg = JWEAlgorithm.RSA_OAEP_256;
EncryptionMethod enc = EncryptionMethod.A128CBC_HS256;
KeyPairGenerator rsaGen = KeyPairGenerator.getInstance("RSA");
//rsaGen.initialize(2048);
KeyPair rsaKeyPair = rsaGen.generateKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey)rsaKeyPair.getPublic();
// Generate the preset Content Encryption (CEK) key
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
SecretKey cek = keyGenerator.generateKey();
// Encrypt the JWE with the RSA public key + specified AES CEK
JWEObject jweObject = new JWEObject(new JWEHeader(alg, enc), new Payload("Hello, world!"));
jweObject.encrypt(new RSAEncrypter(rsaPublicKey, cek)); //**ERROR IN THIS LINE**
String jweString = jweObject.serialize();
}
我已经尝试解决这个问题好几个小时了,但还没有成功。请提出解决方案。
代码中有两个错误:
首先,一个错字:必须删除第 3 行的右括号。
其次,KeyGenerator
在生成CEK时必须初始化如下:
keyGenerator.init(EncryptionMethod.A128CBC_HS256.cekBitLength());
通过这些更改,代码可以在我的机器上运行 (API28/P)。
我正在尝试使用 'nimbus-jose-jwt' 库在 Android 中生成加密的 JWT。但是当我调用库的方法'encrypt()
'时,我得到错误'Cannot resolve symbol 'encrypt'
,即使库的源代码有我指定的对象的方法'encrypt()'。
这是我的代码:
public class EncryptedJWTGenerator {
public EncryptedJWTGenerator() throws NoSuchAlgorithmException, JOSEException {
}
JWEAlgorithm alg = JWEAlgorithm.RSA_OAEP_256;
EncryptionMethod enc = EncryptionMethod.A128CBC_HS256;
KeyPairGenerator rsaGen = KeyPairGenerator.getInstance("RSA");
//rsaGen.initialize(2048);
KeyPair rsaKeyPair = rsaGen.generateKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey)rsaKeyPair.getPublic();
// Generate the preset Content Encryption (CEK) key
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
SecretKey cek = keyGenerator.generateKey();
// Encrypt the JWE with the RSA public key + specified AES CEK
JWEObject jweObject = new JWEObject(new JWEHeader(alg, enc), new Payload("Hello, world!"));
jweObject.encrypt(new RSAEncrypter(rsaPublicKey, cek)); //**ERROR IN THIS LINE**
String jweString = jweObject.serialize();
}
我已经尝试解决这个问题好几个小时了,但还没有成功。请提出解决方案。
代码中有两个错误:
首先,一个错字:必须删除第 3 行的右括号。
其次,
KeyGenerator
在生成CEK时必须初始化如下:keyGenerator.init(EncryptionMethod.A128CBC_HS256.cekBitLength());
通过这些更改,代码可以在我的机器上运行 (API28/P)。