首页 > 解决方案 > 有没有办法用 javascript 生成 RSA 密钥对客户端?

问题描述

我使用了 Cryptico 库,它工作正常,但是来自 Cryptico 的公钥与 OpenSSL 不兼容(这意味着我不能用它来加密数据,例如 PHP)。我在问如何生成与公钥兼容的密钥对客户端OpenSSL 。目标是能够在 IOS、Android 或 PHP 上使用公钥加密数据并在 Javascript 上解密(这意味着它兼容跨平台)。

标签: javascriptcryptographyrsapublic-keycryptico

解决方案


您可以在以下链接中使用 jsbn 库: http ://www-cs-students.stanford.edu/~tjw/jsbn/ ,您可以在此处看到演示: http ://www-cs-students.stanford.edu /~tjw/jsbn/rsa2.html 这是您可能找到的最流行的库,您可以根据自己的要求对其进行自定义。此外,您还有另一个 jsencrypt 选项,可在此处获得: https ://github.com/travist/jsencrypt 它也与 openssl 兼容。

      // 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....');
      }

推荐阅读