Node Crypto diffieHellman.setPrivateKey()

时间:2014-09-17 05:43:16

标签: javascript node.js cryptography public-key-encryption node-crypto

我一直在使用Node中的Crypto lib进行Pub Key交换。到目前为止,我刚刚使用.getDiffieHellman('modp5')为每个新连接生成一个新的公钥/私钥。此方法适用于计算与AES加密一起使用的密钥。

但是,我希望能够将私钥保存到文件中,然后在下次执行时加载它。似乎执行此操作的方式是.getPrivateKey()然后.setPrivateKey(),但在.setPrivateKey()生成的crypto.createDiffieHellman类上使用.getDiffieHellman('modp5')不起作用。这实际上在文档中说明:

  

返回的对象模仿上面的crypto.createDiffieHellman()创建的对象的接口,但不允许更改键(例如,使用diffieHellman.setPublicKey())。

知道这一点,如果我使用以下代码生成私钥:

var crypto = require('crypto');
var Key = crypto.getDiffieHellman('modp5');
Key.generateKeys();
var PrvKey = Key.getPrivateKey();
save_to_file(PrvKey);

如何在以后加载相同的私钥?

var crypto = require('crypto');
var PrvKey = load_from_file();
var Key = crypto.createDiffieHellman(prime, [encoding]);
Key.setPrivateKey( PrvKey )

我查看了加密文档中指定的RFC2412,发现第5组的素数列为:

  

2 ^ 1536 - 2 ^ 1472 - 1 + 2 ^ 64 * {[2 ^ 1406 pi] + 741804}

     

241031242692103258855207602219756607485695054850245994265411   694195810883168261222889009385826134161467322714147790401219   650364895705058263194273070680500922306273474534107340669624   601458936165977404102716924945320037872943417032584377865919   814376319377685986952408894019557734611984354530154704374720   774996976375008430892633929555996888245787241299381012913029   4592999947926365264059284647209730384947211681434464714​​43848   8520940127459844288859336526896320919633919

     

FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1   29024E088A67CC74020BBEA63B139B22514A08798E3404DD   EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245   E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED   EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D   C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F   83655D23DCA3AD961C62F356208552BB9ED529077096966D   670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF

我试图把这个素数放到.createDiffieHellman(prime, [encoding])。但是,在这样做之后,.setPrivateKey()抱怨密钥长度不正确。

任何见解都将受到赞赏。

0 个答案:

没有答案