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

nodejs密钥对rsa模块公钥无效

郭远
2023-03-14

我正在使用密钥对模块

它可以正常工作创建公钥和私钥

我的公钥:

    -----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAh1Z9MSYMkQq1K8HzU4PAGl9GfEoM6TyXseHs7zxv9URyNycL6RWLvHlZzZhj
oskNCdQ5M7oB3Uahv/i3JCLLpqFtNGZdQdbnagkdM4kYNyDaQ4XCuZSQi7PZRZ3S8puz69Un
aHwmKSK0rkm8tWfSAtFPoaDcZ+CdS62745brUmcZM2mkhUUJYmtdys9f3iTtkJ108b6691b0
wLOP85SsjnngUju2di8tFngAHhon+eSl3DpeX7ZwgGsPr+7oKYdkM9tGlaOxTtCkdfnvVK5U
Z7efhvo1eGf2QSvPCuZnzkLg0zubKPEVhJ2wxEFFXl0/OmyoITklgJKF+0TRKmGtzQIDAQAB
-----END RSA PUBLIC KEY-----

我正在使用Jsencrypt

使用那个公钥不起作用..数据未加密

但是jsencrypt生成公钥工作正常。你可以帮我吗?

如何使用我的生成密钥对RSA公钥在js加密?

<!doctype html>
<html>
  <head>
    <title>JavaScript RSA Encryption</title>
    <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script src="bin/jsencrypt.min.js"></script>
    <script type="text/javascript">

      // Call this code when the page is done loading.
      $(function() {

        // Run a quick encryption/decryption when they click.
        $('#testme').click(function() {

          // Encrypt with the public key...
          var encrypt = new JSEncrypt();
          encrypt.setPublicKey($('#pubkey').val());
          var encrypted = encrypt.encrypt($('#input').val());

          // Decrypt with the private key...
          var decrypt = new JSEncrypt();
          decrypt.setPrivateKey($('#privkey').val());
          var uncrypted = decrypt.decrypt(encrypted);

          // Now a simple check to see if the round-trip worked.
          if (uncrypted == $('#input').val()) {
            alert('It works!!!');
          }
          else {
            alert('Something went wrong....');
          }
        });
      });
    </script>
  </head>
  <body>
    <label for="privkey">Private Key</label><br/>
    <textarea id="privkey" rows="15" cols="65">-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
-----END RSA PRIVATE KEY-----</textarea><br/>
    <label for="pubkey">Public Key</label><br/>
    <textarea id="pubkey" rows="15" cols="65">-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN
FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76
xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4
gwQco1KRMDSmXSMkDwIDAQAB
-----END PUBLIC KEY-----</textarea><br/>
    <label for="input">Text to encrypt:</label><br/>
    <textarea id="input" name="input" type="text" rows=4 cols=70>This is a test!</textarea><br/>
    <input id="testme" type="button" value="Test Me!!!" /><br/>
  </body>
</html>

共有1个答案

潘哲
2023-03-14

此密钥是PKCS#1编码的,公钥应该是PKCS#8编码才能使用JSEncrypt。

PKCS#8 是这样的:

-----BEGIN PUBLIC KEY-----
MIIB.....
...
...QIDAQAB
-----END PUBLIC KEY-----

它可以使用openssl从私钥中检索:

openssl rsa -in private_key_file -outform PEM -pubout -out public_key_pkcs8.pub
 类似资料:
  • 问题内容: 我正在编写一个用于传输文件的小型应用程序,或多或少地将其作为一种学习更多编程加密基础的方法。这个想法是生成一个RSA密钥对,交换公共密钥,并发送AES iv和密钥以进一步解密。我想用接收者的RSA公钥加密AES密钥,如下所示: 然后,我将密钥值写给接收器,并按如下方式解密: 在控制台的另一端,我将其作为输出: 此外,如果我创建一个大小为16的字节数组,并将cipher.doFinal(

  • 并且我将这个函数称为用RSA公钥加密DSA密钥的函数:

  • 我们需要使用Azure key vault创建RSA密钥对,并将RSA公钥复制到外部系统。其要求是外部系统使用公钥加密数据,内部系统与azure key vault对话并对数据进行解密。我还没有访问Azure key vault的权限,所以需要查看文档。我有两个基本问题: > 有没有一种方法可以使用Azure portal以文本格式导出RSA公钥,而不使用API(https://docs.micr

  • 我在NodeJS中使用Java的公钥加密时遇到了一些麻烦。 我在中创建了一个RSA密钥,并将公钥作为base64编码字符串输出。 然后取base64编码的公钥,用和封装,并用它加密,然后base64编码节点内的字符串。 任何帮助都将不胜感激!

  • 我们有一个签名服务,它接受sha256哈希作为输入,并使用pkcs11和C#中的bouncy Castle库对哈希进行签名,将签名摘要编码为Bae64并将其发送给请求者。因此,本质上我们正在生成哈希的哈希并对哈希进行签名。 为了验证这一点,另一端的请求者解码Base64接收到的摘要并验证它。我在PowerShell中使用了一个. NET库,并实现了一个验证过程。请参阅下面。 现在,为了避免散列,我

  • 说明 微信支付-获取RSA加密公钥SDK,企业付款到银行卡接口需要。 你还需要执行openssl rsa -RSAPublicKey_in -in weixin-rsa-public.pem -pubout 将命令行输出的证书内容覆盖到weixin-rsa-public.pem文件中才可使用 官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch