实际上,我正在将RSA-OAEP与SHA-256ANDMGF1PADDING一起使用Web crypto API在JavaScript中进行加密和解密。我需要做的实际情况是在Java中,我能够使用具有相同算法规范的公钥和私钥进行加密和解密。但是它使用了65537的公共指数。现在我需要做的是使用公共密钥在javascript中加密某些消息,并在java中解密。但是我发现在上述算法规范的javascript中,它使用Public指数作为5。因此,我想将其更改为65537。我尝试在javascript中使用以下代码。
window.crypto.subtle.generateKey({
name: "RSA-OAEP",
modulusLength: 2048,
publicExponent: new Uint8Array([0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x01]),
hash: {name: "SHA-256"},
},
true,
["encrypt", "decrypt"]);
但仍然,生成的公共密钥的公共指数是5.我在做什么错?我的最终要求是,使用带有SHA-256ANDMGF1PADDING的RSA-OAEP在javascript中加密某些消息,并且能够使用私钥在Java中解密,反之亦然。
答案 0 :(得分:0)
使用它。相当于65437
publicExponent: new Uint8Array([0x01, 0x00, 0x01])
publicExponent
是BigInteger uint8数组中的每个元素都是一个非负整数,范围为0..256
BigInteger
typedef Uint8Array BigInteger;
BigInteger typedef是一个Uint8Array,它按big-endian顺序保存任意大小的无符号整数。
[0x01, 0x00, 0x01] = 00000001 00000000 00000001 = 65537