【问题标题】:Generate EdDSA 25519 key pair for JOSE/NODEJS为 JOSE/NODEJS 生成 EdDSA 25519 密钥对
【发布时间】:2021-06-22 10:42:40
【问题描述】:

这是我在 ubuntu 20.x 上使用的命令,用于为 JOSE/NODEJS (14.16) 应用生成 EdDSA 25519 的密钥对:

$ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id-ed25519 -C myemail_address

这是生成的私钥:

-----BEGIN OPENSSH PRIVATE KEY-----
a3BlbnNzaC1rZXktdjEAAAAABG5vbmVAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAp92w+fwodL4kaUDrNghdZScdcg54IJOO6tLpG91oeKgAAAJj71Y9w+9WP
cAAAAAtzc2gtZWQyNTUxOQAAACAp92w+awodL4kaUDrNghdZScdcg54IJOO6tLpG91oeKg
AAAEDsEfbdyx4HaM5cL1f2Ag2Knb0NDCIiuIDsm6FwR5NJESn3bD5/Ch0viRpQOs2CF1lJ
c1yDnggk47q0ukb3Wh4qAAAAFGVtY2yhYjIwMTFAZ21haWwuY29tAQ==
-----END OPENSSH PRIVATE KEY-----

私钥有 366 个字节而不是 32 个字节。

这是公钥:

BAAAC3NzaC1lZ1I1NTE5AAAAICn3CD5/Ch0viRpQOs2CF1lJx1yDnggk47q0ukb3Wh4q myemail_address

不计算电子邮件地址是 63 字节,看起来太长了。

这是为 EdDSA 25519 生成密钥对的正确方法吗?如果不是,那么正确的方法是什么?

【问题讨论】:

标签: jwt jose


【解决方案1】:

您也可以为此使用 Node.js (>= 12.0.0)。

const keypair = crypto.generateKeyPairSync(
  'ed25519', 
  {
    privateKeyEncoding: { format: 'pem', type: 'pkcs8' }, 
    publicKeyEncoding: { format: 'pem', type: 'spki' }
  }
)

console.log(keypair.privateKey)
console.log(keypair.publicKey)

blocking 和 non-blocking API 都适用于此。

【讨论】:

  • 也可以使用:const generateKeyPair = util.promisify(crypto.generateKeyPair)
猜你喜欢
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2017-10-15
  • 2018-12-21
  • 1970-01-01
  • 2022-06-22
  • 2017-05-11
相关资源
最近更新 更多