【问题标题】:Save RSA Key object from Cryptico.js从 Cryptico.js 保存 RSA 密钥对象
【发布时间】:2014-12-24 13:15:32
【问题描述】:

我正在努力发现如何将 javascript 对象转换为某个变量(数组?)并使用如下代码保存它:

function onDownload() {
    document.location = 'data:Application/octet-stream,' +
                         encodeURIComponent(RsaKey);
}

为什么?

cryptico 库(文档:github)为我提供了一个易于使用的 RSA 接口。但是当生成的密钥对是一个对象时,我的噩梦就来了。我不知道如何将这个对象从客户端的浏览器导出到一个文件中,以备后用。密钥的公共部分,可以通过函数转换成字符串

公钥字符串

但私人部分,在对象内部。我阅读了 RSA 算法,发现“d”在私钥中很重要,并且我在 rsa.js 内部的密钥生成函数中有“d”

        this.d = ee.modInverse(phi);

我试图获取这个值并将其放入一个字符串中,但没有奏效。不知道还能做什么。感谢任何帮助。

【问题讨论】:

  • 您可以使用“JSON.stringify(obj);”将整个对象保存为可读的 JSON 字符串。这就是你要找的东西吗?
  • 我对javascript的了解太少,而在JSON方面我一无所知。如果可能的话,我更喜欢纯 JavaScript 解决方案。而且我不知道是否最好的方法是将整个对象转换为字符串。我宁愿只保存私钥部分...

标签: javascript cryptico


【解决方案1】:

如果您使用的是 cryptico.js,可以使用 rsa.js 和 jsbn.js 并从存储库 (https://github.com/wwwtyro/cryptico) 添加到您的项目中。

试试这个以保存在 localStorage 上:

localStorage["strPrivateKey"] = JSON.stringify(RSAKey.toJSON());

然后试试这个来取回密钥:

var key = RSAParse(localStorage["strPrivateKey"]);

如果由于某种原因 RSAParse() 不在 rsa.js 上,您可以添加:

function RSAParse(rsaString) {
    var json = JSON.parse(rsaString);
    var rsa = new RSAKey();

    rsa.setPrivateEx(json.n, json.e, json.d, json.p, json.q, json.dmp1, json.dmq1, json.coeff);

    return rsa;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多