node.js中带有加密的自定义私钥

时间:2016-02-20 19:26:02

标签: node.js cryptography diffie-hellman

来自:https://nodejs.org/api/crypto.html#crypto_class_ecdh

const alice_key = alice.generateKeys();

将生成随机私钥和相应的公钥。

但我想设置自己的私钥:e8f32e723decf ...

如果我使用:

alice.setPrivateKey("e8f32e723decf");

对象alice_key不受影响,所以稍后:

const bob_secret = bob.computeSecret(alice_key, 'hex', 'hex');

会错的。有没有办法做类似的事情:

const alice_key = alice.generateKeys("e8f32e723decf");

1 个答案:

答案 0 :(得分:2)

首先,我想你的十六进制字符串缺少一个前导0e8f32e723decf,所以它应该是ECDH.setPrivateKey()

那么它取决于你的node.js版本, const crypto = require('crypto'); // this is just to generate a private/public key pair const warmup = crypto.createECDH('secp521r1'); warmup.generateKeys(); const warmup_private_key = warmup.getPrivateKey(); const warmup_public_key = warmup.getPublicKey(); // convert it to hex string to match the example // you would store these strings somewhere I guess private_key = warmup_private_key.toString('hex'); public_key = warmup_public_key.toString('hex'); // now let's create the ciphers const alice = crypto.createECDH('secp521r1'); const bob = crypto.createECDH('secp521r1'); ---------- // Bob gets created keys bob.generateKeys(); // Generate Alice's keys - that's really annoying since you will override it alice.generateKeys(); // now set the keys: alice.setPrivateKey(private_key, "hex"); alice.setPublicKey(public_key, "hex"); // Exchange and generate the secret... const alice_secret = alice.computeSecret(bob.getPublicKey()); const bob_secret = bob.computeSecret(alice.getPublicKey()); console.log("alice's shared secret: " + alice_secret.toString('hex') + "\n"); console.log("bob's shared secret: " + bob_secret.toString('hex') + "\n"); console.log('shared secrets match: ' + alice_secret.equals(bob_secret)); 的实现从5.1更改为5.2

node.js 5.0


const crypto = require('crypto');
const alice = crypto.createECDH('secp256k1');
const bob = crypto.createECDH('secp256k1');
bob.generateKeys();

alice.setPrivateKey('0e8f32e723decf', 'hex');

const alice_secret = alice.computeSecret(bob.getPublicKey());
const bob_secret = bob.computeSecret(alice.getPublicKey());

console.log(alice_secret.equals(bob_secret));

node.js> = 5.2

left outer join ( SELECT acd_aad_id, max(acd_id) max_acd_id FROM     daybreak.contract_details lastexpire   WHERE
  lastexpire.acd_itemization_tcd_code in ('IIN_5') and
  lastexpire.acd_expiry_dt between to_date('2014-01-01','yyyy-mm-dd') 
                               and to_date('2014-02-01','yyyy-mm-dd') and
 lastexpire.acd_term > 0 ) max_ids ON max_ids.acd_aad_id = aac_aad_id
left outer join  
daybreak.contract_details expiring     on
 expiring.acd_id  = max_ids.acd_aad_id