静态方法:ECDH.convertKey(key, curve[, inputEncoding[, outputEncoding[, format]]])
¥Static method: ECDH.convertKey(key, curve[, inputEncoding[, outputEncoding[, format]]])
- 
key<string> | <ArrayBuffer> | <Buffer> | <TypedArray> | <DataView>
- 
curve<string>
- 
format<string> 默认值:'uncompressed'¥ format<string> Default:'uncompressed'
将 key 和 curve 指定的 EC Diffie-Hellman 公钥转换为 format 指定的格式。format 参数指定点编码,可以是 'compressed'、'uncompressed' 或 'hybrid'。提供的密钥使用指定的 inputEncoding 进行解释,返回的密钥使用指定的 outputEncoding 进行编码。
¥Converts the EC Diffie-Hellman public key specified by key and curve to the
format specified by format. The format argument specifies point encoding
and can be 'compressed', 'uncompressed' or 'hybrid'. The supplied key is
interpreted using the specified inputEncoding, and the returned key is encoded
using the specified outputEncoding.
使用 crypto.getCurves() 获取可用曲线名称的列表。在最近的 OpenSSL 版本中,openssl ecparam -list_curves 还将显示每个可用椭圆曲线的名称和描述。
¥Use crypto.getCurves() to obtain a list of available curve names.
On recent OpenSSL releases, openssl ecparam -list_curves will also display
the name and description of each available elliptic curve.
如果未指定 format,该点将以 'uncompressed' 格式返回。
¥If format is not specified the point will be returned in 'uncompressed'
format.
如果未提供 inputEncoding,则 key 应为 Buffer、TypedArray 或 DataView。
¥If the inputEncoding is not provided, key is expected to be a Buffer,
TypedArray, or DataView.
示例(解压缩密钥):
¥Example (uncompressing a key):
const {
  createECDH,
  ECDH,
} = await import('node:crypto');
const ecdh = createECDH('secp256k1');
ecdh.generateKeys();
const compressedKey = ecdh.getPublicKey('hex', 'compressed');
const uncompressedKey = ECDH.convertKey(compressedKey,
                                        'secp256k1',
                                        'hex',
                                        'hex',
                                        'uncompressed');
// The converted key and the uncompressed public key should be the same
console.log(uncompressedKey === ecdh.getPublicKey('hex'));const {
  createECDH,
  ECDH,
} = require('node:crypto');
const ecdh = createECDH('secp256k1');
ecdh.generateKeys();
const compressedKey = ecdh.getPublicKey('hex', 'compressed');
const uncompressedKey = ECDH.convertKey(compressedKey,
                                        'secp256k1',
                                        'hex',
                                        'hex',
                                        'uncompressed');
// The converted key and the uncompressed public key should be the same
console.log(uncompressedKey === ecdh.getPublicKey('hex'));