1

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

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

为什么?

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

公钥字符串

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

        this.d = ee.modInverse(phi);

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

4

1 回答 1

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;
}
于 2017-01-30T16:18:22.277 回答