ECDH类


    ECDH 类的实例可以使用 函数来创建。

    生成私有的和公共的 EC Diffie-Hellman 键值,并返回指定 formatencoding 的公钥。这个密钥应该转移到另一方。

    format 参数指定点编码,可以是 'compressed''uncompressed''hybrid'。如果没有指定 format,这个点会以 'uncompressed' 格式返回。

    encoding 参数可以是 'binary''hex''base64'。如果提供了 encoding,会返回一个字符串;否则返回一个 Buffer

    ecdh.setPrivateKey(private_key[, encoding])

    返回指定了 encoding 的 EC Diffie-Hellman 私钥,它可以是 、'hex''base64'。如果提供了 encoding,会返回一个字符串;否则返回一个 Buffer

    ecdh.setPublicKey(public_key[, encoding])

    设置一个 EC Diffie-Hellman 公钥。密钥的编码可以是 'binary''hex''base64'。如果提供了 public_key 则期望是个字符串;否则,期望是一个 Buffer

    请注意,通常没有理由调用此方法,因为 ECDH 只需要私钥和对方的公钥来计算共享密钥。通常会调用 或 ecdh.setPrivateKey()。 方法尝试生成与正被设置的私钥相关联的公共点/密钥。

    1. const crypto = require('crypto');
    2. const alice = crypto.createECDH('secp256k1');
    3. const bob = crypto.createECDH('secp256k1');
    4. // Note: This is a shortcut way to specify one of Alice's previous private
    5. // keys. It would be unwise to use such a predictable private key in a real
    6. // application.
    7. crypto.createHash('sha256').update('alice', 'utf8').digest()
    8. );
    9. // Bob uses a newly generated cryptographically strong
    10. // pseudorandom key pair bob.generateKeys();
    11. const alice_secret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
    12. const bob_secret = bob.computeSecret(alice.getPublicKey(), null, 'hex');
    13. console.log(alice_secret === bob_secret);

    返回指定了 encodingformat 的 EC Diffie-Hellman 公钥。

    format 参数指定点编码,可以是 'compressed''uncompressed''hybrid'。如果没有指定 format,这个点会以 'uncompressed' 格式返回。

    encoding 参数可以是 'binary''hex''base64'。如果提供了 encoding,会返回一个字符串;否则返回一个 Buffer

    ecdh.computeSecret(other_public_key[, input_encoding][, output_encoding])

    使用作为对方的公钥的 other_public_key 计算共享密钥,并返回计算后的共享密钥。使用指定的 input_encoding 解释提供的密钥,并返回使用指定 output_encoding 编码的密钥。编码可以是 'binary''hex''base64'。如果没有提供 input_encodingother_public_key 期望是一个 Buffer