我想生成 ssh 密鑰,公鑰和私鑰,并以字符串形式返回,但我不知道如何將類型 *pem.Block 轉換為字符串。這是我當前的代碼:package mainimport ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/asn1" "encoding/pem" "fmt" "bytes" "bufio")func Keymaker() { reader := rand.Reader bitSize := 2048 key, err := rsa.GenerateKey(reader, bitSize) if err != nil { //return nil, nil, err } publicKey := key.PublicKey var privateKey = &pem.Block{ Type: "PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key), } asn1Bytes, err := asn1.Marshal(publicKey) if err != nil { //return nil, nil, err } var pemkey = &pem.Block{ Type: "PUBLIC KEY", Bytes: asn1Bytes, } var PublicKeyRow bytes.Buffer err = pem.Encode(bufio.NewWriter(&PublicKeyRow), pemkey) fmt.Println("public_key : ", PublicKeyRow) fmt.Println("private_key : ", privateKey ) return}func main() { Keymaker()}這是我當前的錯誤:# command-line-arguments./dkim.go:46:38: cannot convert privateKey (type *pem.Block) to type string我需要字符串格式,因為我想將密鑰存儲在數據庫中,如何將 (type *pem.Block) 轉換為 string 類型?以及如何將(類型 bytes.Buffer)轉換為類型字符串?
1 回答

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
您想要寫信給PublicKeyRow已經是正確的。io.Writer您不需要創建另一個 by buffio.NewWriter(&PublicKeyRow)。因此,要轉換pem.Block為字符串,您的最后幾行應如下所示:
var PublicKeyRow bytes.Buffer
err = pem.Encode(&PublicKeyRow, pemkey)
fmt.Println("public_key : ", PublicKeyRow)
fmt.Println("public_key(string) : ", PublicKeyRow.String())
fmt.Println("private_key : ", privateKey )
更新 要獲取私鑰,您可以添加另一個編碼
var PublicKeyRow bytes.Buffer
var PrivateKeyRow bytes.Buffer
err = pem.Encode(&PublicKeyRow, pemkey)
err = pem.Encode(&PrivateKeyRow, privateKey)
fmt.Println("public_key: ", PublicKeyRow.String())
fmt.Println("private_key : ", PrivateKeyRow.String() )
- 1 回答
- 0 關注
- 233 瀏覽
添加回答
舉報
0/150
提交
取消