我有一个私钥,它是:
0x66228b427f07b168c7cb1380aa5554403b9e24bf935a9364c89711a306a23ddb
注意:问题发布时,原始密钥是公钥:0x6a2043113D5640F9F50dC593D0DcD8CC1c970EB1
这个问题是我随机生成的,所以不用担心它在互联网上是公开的。
我想使用它作为JWT令牌的加密方案,使用ES256算法。
要把它放到我的库中,我必须有这些格式之一
secretOrPrivateKey是一个字符串、缓冲区或对象,包含HMAC算法的secret或RSA和ECDSA的PEM编码私钥。对于带有passphrase的私钥,可以使用对象{key, passphrase}(基于加密文档),在这种情况下,请确保传递算法选项。
是否有任何简单的方法将十六进制值移动到这些格式之一?或者,这会因为我不理解以太坊私钥和ES256之间的区别而不起作用吗?
以太坊密钥实际上是ES256K而不是ES256,所以在这种情况下可能不可能。
如果您需要在NodeJS中转换PEM中的密钥,则有一个名为key-encoder的库用于此特定目的。这可以用下面的代码来完成。
var KeyEncoder = require('key-encoder');
console.log(KeyEncoder.default);
let keyEncoder = new KeyEncoder.default('secp256k1')
var pemPrivateKey = keyEncoder.encodePrivate('0x66228b427f07b168c7cb1380aa5554403b9e24bf935a9364c89711a306a23ddb', 'raw', 'pem')
console.log(pemPrivateKey);