如何在javascript

时间:2018-07-04 07:47:06

标签: javascript encryption rsa padding

实际上,我正在将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中解密,反之亦然。

1 个答案:

答案 0 :(得分:0)

使用它。相当于65437

 publicExponent: new Uint8Array([0x01, 0x00, 0x01])

publicExponentBigInteger uint8数组中的每个元素都是一个非负整数,范围为0..256

  
      
  1. BigInteger

         

    typedef Uint8Array BigInteger;

  2.   
     

BigInteger typedef是一个Uint8Array,它按big-endian顺序保存任意大小的无符号整数。

[0x01, 0x00, 0x01] = 00000001 00000000 00000001 = 65537