有没有办法用 javascript 在客户端生成 RSA 密钥对?
Is there a way to generate RSA key pair client side with javascript?
我使用了 Cryptico 库,它工作正常,但是 Cryptico 的 public 密钥与 OpenSSL 不兼容(这意味着我不能用它来加密数据,例如 PHP) .我在问如何生成密钥对 客户端,其中 public 密钥 与 OpenSSL 兼容。目标是能够在 IOS、Android 或 PHP 上使用 public 密钥加密数据并在 Javascript 上解密(这意味着它是跨平台兼容的) ).
您可以在下面的link中使用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....');
}
我使用了 Cryptico 库,它工作正常,但是 Cryptico 的 public 密钥与 OpenSSL 不兼容(这意味着我不能用它来加密数据,例如 PHP) .我在问如何生成密钥对 客户端,其中 public 密钥 与 OpenSSL 兼容。目标是能够在 IOS、Android 或 PHP 上使用 public 密钥加密数据并在 Javascript 上解密(这意味着它是跨平台兼容的) ).
您可以在下面的link中使用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....');
}