javascript - 有没有办法用 javascript 生成 RSA 密钥对客户端?
问题描述
我使用了 Cryptico 库,它工作正常,但是来自 Cryptico 的公钥与 OpenSSL 不兼容(这意味着我不能用它来加密数据,例如 PHP)。我在问如何生成与公钥兼容的密钥对客户端OpenSSL 。目标是能够在 IOS、Android 或 PHP 上使用公钥加密数据并在 Javascript 上解密(这意味着它兼容跨平台)。
解决方案
您可以在以下链接中使用 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....');
}
推荐阅读
- javascript - 将数据从 web 服务加载到表中,然后到数据库
- php - 在PHP中合并两个具有公共字段值的json文件
- php - 不需要的前缀被添加到我的查询列名中
- javascript - JavaScript ES6 转换复杂对象的更好方法
- python - Project Euler 问题 #18 Python - 得到错误的结果。为什么?
- android - 如何更改 Xamarin.Forms 中日期选择器的区域设置?
- python - 如何将 robocopy 进度从控制台输出到 tkinter 标签
- python - 将二维数组分配给熊猫数据框
- c++ - 什么样的值是模板参数?我可以(不)用它们做什么?
- ip - 白名单前端的 IP 组 - Træfik