从Cryptico.js保存RSA密钥对象

时间:2014-12-24 13:15:33

标签: javascript cryptico

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

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

为什么吗

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

转换为字符串
  

publicKeyString

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

        this.d = ee.modInverse(phi);

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

1 个答案:

答案 0 :(得分: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;
}