Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要用java解密JWE响应_Javascript_Java_Encryption_Jwt_Jwe - Fatal编程技术网

Javascript 我需要用java解密JWE响应

Javascript 我需要用java解密JWE响应,javascript,java,encryption,jwt,jwe,Javascript,Java,Encryption,Jwt,Jwe,我能够获得解密的数据(有效载荷),但无法验证数据在传输中是否没有更改 使用RSA私钥和标头中指定的“alg”算法对加密密钥进行解密,以生成对称密钥。接下来,使用JWE解密库使用对称密钥、初始化向量、标记和ascii编码的报头对密码文本进行解密,报头中使用“enc”算法 JavaScript工作代码 //使用私钥解密JWE security.decryptJWE=函数decryptJWE(标头、encryptedKey、iv、密文、标记、私钥){ log(“解密JWE.green+”(格式:“+

我能够获得解密的数据(有效载荷),但无法验证数据在传输中是否没有更改

使用RSA私钥和标头中指定的“alg”算法对加密密钥进行解密,以生成对称密钥。接下来,使用JWE解密库使用对称密钥、初始化向量、标记和ascii编码的报头对密码文本进行解密,报头中使用“enc”算法

JavaScript工作代码


//使用私钥解密JWE
security.decryptJWE=函数decryptJWE(标头、encryptedKey、iv、密文、标记、私钥){
log(“解密JWE.green+”(格式:“+”标题“+”红色+”+”加密密钥“+”青色+”+”iv“.green+”+”密文“+”洋红+”+”标签“.yellow+”);
console.log(header.red+“+encryptedKey.cyan+”+iv.green+“+cipherText.magenta+”+tag.yellow);
返回新承诺((解决、拒绝)=>{
var keystore=jose.JWK.createKeyStore();
log((新的缓冲区(头,'base64')).toString('ascii');
风险值数据={
“类型”:“紧凑型”,
“密文”:密文,
“受保护”:标题,
“加密密钥”:加密密钥,
“标签”:标签,
"四":四,,
“header”:JSON.parse(jose.util.base64url.decode(header.toString())
};
add(fs.readFileSync(privateKey,'utf8'),“pem”)
.then(函数(jweKey){
//{result}是一个jose.JWK.Key
jose.JWE.createDecrypt(jweKey)
.解密(数据)
.然后(函数(结果){
解析(JSON.parse(result.payload.toString());
})
.catch(函数(错误){
拒绝(错误);
});
});
})
.catch(错误=>{
错误(“解密JWE时出错:%s”。红色,错误);
抛出“解密JWE时出错”;
})
}
下面的Java代码缺少验证部分,因为我不知道如何进行验证

Java代码

私有字符串解密JWT(字符串令牌){
JWEObject JWEObject;
试一试{
jweObject=jweObject.parse(令牌);
//使用共享密钥解密
字节[]b1=Base64.getDecoder().decode(私钥);
PKCS8EncodedKeySpec spec=新的PKCS8EncodedKeySpec(b1);
KeyFactory kf=KeyFactory.getInstance(“RSA”);
RSADecrypter decrypter=新的RSADecrypter(kf.generatePrivate(spec));
jweObject.decrypt(解密程序);
//提取有效载荷
SignedJWT SignedJWT=jweObject.getPayload().toSignedJWT();
返回signedJWT.getPayload().toJSONObject().toString();
}捕获(例外e){
e、 printStackTrace();
抛出新的运行时异常(e);
}
}
/*我已尝试使用此代码进行验证,但不起作用*/
RSAKey serverPublicKey=RSAKey.parse(signedJWT.getHeader().getJWK().toJSONObject());
if(signedJWT.verify(新的rsassavifier(serverPublicKey))){
返回signedJWT.getPayload().toJSONObject().toString();
}
看看这个要点,