gpt4 book ai didi

go - 在 Go 中解析使用 openssl 生成的 curve25519 键

转载 作者:行者123 更新时间:2023-12-01 22:17:48 27 4
gpt4 key购买 nike

使用 OpenSSL版本 1.1 及或更高版本,我能够生成一个 curve25519 key :

openssl genpkey -algorithm x25519

这会产生一个形式为的私钥:
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEIDgk3GuFMIaUJd3m95jn/Z8oU+cK9FzPoidIDn/bqRlk
-----END PRIVATE KEY-----

我想在 Go 中解析这个 key 文件并可能使用 golang.org/x/crypto/nacl/box .看 crypto/x509文档,我找不到解析curve25519的解析函数。有人有想法吗?

我试过:
pKey := `-----BEGIN PUBLIC KEY-----
MCowBQYDK2VuAyEAfLLsWKkI/7EmTOkSf4fyHuRHDnKk6qNncWDzV8jlIUU=
-----END PUBLIC KEY-----`

block, _ := pem.Decode([]byte(pKey))
key, err := x509.ParsePKIXPublicKey(block.Bytes)
if err != nil {
fmt.Println(err)
}

我收到错误 unknown public key algorithm .

最佳答案

由于目前无法在标准库中解析 X25519 key ,因此您可能必须“手动”执行此操作。

您可以通过 using the encoding/asn1 library to decode the keys “正确”地做到这一点,但在这种情况下,有一种更简单的方法。

事实证明,对于私钥和公钥,实际 key 只是 key 的 base64 解码 block 的最后 32 个字节。

所以你可以这样做:

block, _ := pem.Decode([]byte(pemString))
key := block.Bytes[len(block.Bytes)-32:]

这对公钥和私钥都有效,并且会给你一个 32 字节的 []byte包含适当的 key 。

关于go - 在 Go 中解析使用 openssl 生成的 curve25519 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58191402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com