当前位置: 首页 > 知识库问答 >
问题:

Java和。NET 4.6为相同密钥生成的不同JSON Web加密(JWE)令牌

公西俊德
2023-03-14

我需要从Java和。NET 4.6C#应用程序中生成JWE令牌(JWE令牌将在Java和。NET应用程序之间传递)。Java应用程序使用的是Nimbus Jose库,而.NET应用程序使用的是Nuget中提供的jose-jwt包。

String payload = "{\"testP\":\"test\"}";
byte[] key=<secret key bytes here>;
Payload payload = new Payload(payload);
JWEHeader jweHeader = new JWEHeader.Builder(JWEAlgorithm.A256KW, EncryptionMethod.A256GCM).keyID("test_kid").build();
JWEObject jweObject = new JWEObject(jweHeader, payload);
jweObject.encrypt(new AESEncrypter(key));
String encryptedPayload = jweObject.serialize();
using Jose;
----------------------------------------
----------------------------------------
string payload= "{\"testP\":\"test\"}";
var headers= new Dictionary<string, object> { {"kid","test_kid"},};
byte[] secretKey =<secret key bytes here>;
var jweToken=JWT.Encode(payload, secretKey, JweAlgorithm.A256KW, JweEncryption.A256GCM, extraHeaders: headers);

共有1个答案

蒯宇定
2023-03-14

这是正常的行为。除了关键材料之外,在令牌的计算过程中还会生成初始化向量(IV)(参见RFC7516第5.1节中的步骤9)。

这个IV应该是一个随机字节串,熵应该足够唯一性。

 类似资料:
  • 我试图学习并在java中实现JWE来解决问题。我试图理解内容加密密钥是如何使用特定算法生成的(比如RSA-PKCS1\u 1.5)。 我知道如何使用密钥生成器生成一对密钥,然后使用公钥进行加密,使用私钥进行解密。此外,我知道如何通过给出声明来创建简单的JWT令牌,以及如何对其进行签名。我试着遵循以下步骤: 消息加密过程如下: 生成随机内容加密密钥(CEK)。CEK的长度必须至少等于所需加密密钥的长

  • 我有以下问题。我的应用程序分为两部分:1)第一部分使用AES/CBC(Java)加密一些数据,2)第二部分必须检索数据并解密(Android)。要生成密钥,我使用以下代码 我的程序不需要不同的“源密钥”(字符串密码),但是只要源密钥相同,它就需要计算相同的密钥。不幸的是,程序的两部分生成的密钥不同,解密阶段失败。对如何解决这个问题有什么建议吗?

  • 我试图使用PBE生成一个密钥,但SecretKeyFactory生成的密钥与输入密码完全相同。我尝试过不同的算法,迭代次数等,但仍然是一样的,所以我觉得我错过了一步。 编辑:如果我使用算法“PBKDF2WithHmacSHA1”,那么生成的密钥与密码不同,但我使用的算法为什么会生成与输入密码完全相同的密钥?

  • 问题内容: 我正在尝试使用C#和Java加密相同的数据。如果数据超过7个字节,则Java和C#加密值不相同。 输入1: 一 java的输出: FrOzOp / 2Io8 = C#输出: FrOzOp / 2Io8 = 输入2: abc j: H9A / ahl8K7I = c#: H9A / ahl8K7I = 输入3: aaaaaaaa ( 问题 ) j: Gxl7e0aWPd7j6l7uIEu

  • 使用Python-GnuPG我想 null 不幸的是,加密返回错误: 但它仍然生成加密ASCII铠甲消息,如果解密结果为对象,则bool值为属性,并包含以下属性: 不确定错误发生的确切位置以及如何处理

  • 我一直在尝试在AWS Lambda上生成一个RSA密钥对,以取代当前在PuTTYgen上手动生成的密钥。PuTTYgen上生成的密钥是RSA类型,长度为2048,这将生成一个示例密钥(无注释),如下所示- 现在我一直在尝试用下面的代码在NodeJS lambda上复制相同的代码- 在执行此lambda时,生成的公钥如下所示- 就我对RSA密钥的理解而言,第一行和最后一行不应该有任何区别,因为它们基

  • 我正在尝试创建一个公钥以允许我推送到Git,但我的. ssh文件夹尚未创建。 以下是我运行的命令: $ssh-keygen-t rsa-Cemaill@me.com 生成公共/私有rsa密钥对 输入保存密钥的文件(/h/.ssh/id\u rsa): 这就是H:驱动器配置、数据、配置文件、配置文件中的全部内容。V2 我认为有一个问题,因为当我得到提示输入文件,其中保存密钥(/h//. ssh/id