登录
首页 >  Golang >  Go问答

使用 Golang 生成带密码保护的 PGP 密钥对

来源:stackoverflow

时间:2024-03-01 22:24:15 416浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《使用 Golang 生成带密码保护的 PGP 密钥对》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我正在尝试在 golang 中生成 pgp 密钥对(公钥和私钥)和密码。我发现了一些用于生成密钥的不同函数,但没有找到任何可以使用密码生成密钥对的函数。我一直在使用 gopenpgp,但我愿意使用任何库。如果有人能给我一个使用密码生成 pgp 密钥对的示例,我将不胜感激。这就是我目前拥有的(尽管我知道这行不通,因为私钥和公钥甚至不是一起生成的):

passphrase = "passphrase"
    privateKey, err = helper.GenerateKey("name", "email", []byte(passphrase), "rsa", 4096)
    if err != nil {
        return "", "", "", nil, nil, err
    }
    publicKey, err = helper.GenerateKey("name", "email", nil, "rsa", 4096)
    if err != nil {
        return "", "", "", nil, nil, err
    }

正确答案


go.mod中需要:github.com/protonmail/gopenpgp/v2 v2.4.10

package main

import (
    "fmt"
    "strings"

    "github.com/ProtonMail/gopenpgp/v2/crypto"
    "github.com/ProtonMail/gopenpgp/v2/helper"
)

func main() {
    var (
        name       = "Max Mustermann"
        email      = "[email protected]"
        passphrase = []byte("LongSecret")
        rsaBits    = 2048 * 2
    )

    // RSA, string
    rsaKey, err := helper.GenerateKey(name, email, passphrase, "rsa", rsaBits)
    if err != nil {
        panic(err)
    }

    fmt.Println(rsaKey)

    keyRing, err := crypto.NewKeyFromArmoredReader(strings.NewReader(rsaKey))
    if err != nil {
        panic(err)
    }

    publicKey, err := keyRing.GetArmoredPublicKey()
    if err != nil {
        panic(err)
    }
    fmt.Println(publicKey)
}

本篇关于《使用 Golang 生成带密码保护的 PGP 密钥对》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>