对于JWE解密这件事来说有点陌生。我有一个服务器,它执行JWE并根据服务器和客户端之间共享的密钥将其发送给客户端。
我正在使用Jose4j进行解密,并得到了这个错误
Java语言lang.NullPointerException:JWE的明文负载尚未设置。
我正在使用此链接中显示的示例代码,接收器部分
https://bitbucket.org/b_c/jose4j/wiki/JWE示例
我对服务器没有任何洞察力,只是编写客户端。我很困惑,如果paylaod本身没有来,或者那个框架正在试图解密。
感谢任何调试问题的指针
问候,阿拉文
JWE在获得纯文本负载之前需要2个级别的解密。
所以首先是JWE到JWS。然后在验证签名后从JWS到JWT。下面的代码将实现这一点。
// That other party, the receiver, can then use JsonWebEncryption to decrypt the message.
JsonWebEncryption receiverJwe = new JsonWebEncryption();
// Set the compact serialization on new Json Web Encryption object
//This is the received payload JWE payload
receiverJwe.setCompactSerialization(result.toString());
// Symmetric encryption, like we are doing here, requires that both parties have the same key.
// The key will have had to have been securely exchanged out-of-band somehow.
receiverJwe.setKey(secretKeySpec);
// Set the "alg" header, which indicates the key management mode for this JWE.
// In this example we are using the direct key management mode, which means
// the given key will be used directly as the content encryption key.
//receiverJwe.setAlgorithmHeaderValue(KeyManagementAlgorithmIdentifiers.DIRECT);
//receiverJwe.setEncryptionMethodHeaderParameter(ContentEncryptionAlgorithmIdentifiers.AES_128_CBC_HMAC_SHA_256);
// Get the message that was encrypted in the JWE. This step performs the actual decryption steps.
String jwsPayload = receiverJwe.getPlaintextString();
// And do whatever you need to do with the clear text message.
System.out.println("plaintext: " + jwsPayload);
// Create a new JsonWebSignature object
JsonWebSignature jws = new JsonWebSignature();
jws.setCompactSerialization(jwsPayload);
jws.setKey(secretKeySpec);
boolean signatureVerified = jws.verifySignature();
// Do something useful with the result of signature verification
System.out.println("JWS Signature is valid: " + signatureVerified);
// Get the payload, or signed content, from the JWS
String payload = jws.getPayload();
// Do something useful with the content
System.out.println("JWS payload: " + payload);
只有在没有有效负载集的情况下,才会从getCompactSerialization()方法引发该特定异常-getCompactSerialization()是发送/加密端创建JWE的最后一步。如果你正在解密,你不应该这么叫。也许你在什么地方接到了一个意外的电话?否则,您使用的代码以及示例原始JWE值可能有助于解决问题(和键,如果这只是一个测试,您可以共享它们)。
我试图在Android(Java)中实现ECDH加密/解密和JWE。 我找到了jose4j和Nimbus JOSE库,它们旨在做我需要的一切,但似乎比我想象的更具挑战性。 如果有人熟悉的话,那就是3D安全2.0。。。 在以下规范中: SDK=本地端 DS=目录服务器(另一边) 接下来是规范: 给定:P(DS)-EC公钥(以PEM格式提供,可以转换为PublicKey或JWK) 生成新的短暂密钥对(
我正在尝试解密存储在SecureStorage文件中的数据库密码。我正在使用nCipherKM HSM安全提供程序,用于解密的密钥加密密钥存储在密钥存储库(文件夹)中。当我尝试通过传递密钥存储库密码来加载HSM密钥存储库时,它无法使用以下异常加载密钥存储库。不确定此错误的根本原因是什么。 代码片段: 例外: Java语言io。IOException:提供了密码,但所有密钥都受模块保护。在com。n
我有一个类似于下面的私钥 例如。 我有下面的JWE数据,它是使用上面的私钥/证书生成的公钥加密的 有人能给我java代码,我可以用我的私钥解密这个JWE吗?我在网上找不到明确的答案。我对JWE这个概念很陌生
我试图实现我的RestAPI的JWE。我遇到了以下实现JWE的节点库。然而,库缺乏关于如何使用JSON Web密钥(JWK)(JSON对象)的留档,这有助于密钥管理模式。JWE留档内容如下: 确定要使用的内容加密密钥值的方法。用于确定CEK值的每个算法使用特定的密钥管理模式。本规范采用的密钥管理模式包括密钥加密、密钥包装、直接密钥协议、密钥协议与密钥包装以及直接加密。 所以我想知道我应该如何将JW
我试图学习并在java中实现JWE来解决问题。我试图理解内容加密密钥是如何使用特定算法生成的(比如RSA-PKCS1\u 1.5)。 我知道如何使用密钥生成器生成一对密钥,然后使用公钥进行加密,使用私钥进行解密。此外,我知道如何通过给出声明来创建简单的JWT令牌,以及如何对其进行签名。我试着遵循以下步骤: 消息加密过程如下: 生成随机内容加密密钥(CEK)。CEK的长度必须至少等于所需加密密钥的长
问题内容: 根据RFC 7516,应该可以加密称为JWE的有效负载/声明。 是否有任何支持该功能的python库? 我已经检查了PyJWT,python-jose和jwcrypto,但它们都只提供了(JWS)签名的示例。 抱歉,如果这是完全显而易见的,但是在涉及加密的事情上,我要格外谨慎。 问题答案: Jose和jwcrypto库都可以执行JWE。 对于jose: 对于jwcrypto: