Json 存储和检索RSA加密密钥

Json 存储和检索RSA加密密钥,json,encryption,go,rsa,decode,Json,Encryption,Go,Rsa,Decode,我正在尝试构建一个API,但为了确保它的安全,我相信我需要对存储在服务器上的私钥和客户端的公钥使用RSA加密。我已经将生成的私钥存储到一个JSON文件中,我计划将其存储在我的服务器上,但要写入JSON,我还需要转换类型[]byte。现在,当我尝试检索私钥以生成公钥时,它不允许我为*Publickey 我能想到的实现这一目标的唯一其他方法是给随机数生成器种子,这样我就可以在我的服务器上有一个秘密种子,然后我的私钥应该总是生成相同的东西,任何帮助都会很好 package main import (

我正在尝试构建一个API,但为了确保它的安全,我相信我需要对存储在服务器上的私钥和客户端的公钥使用RSA加密。我已经将生成的私钥存储到一个JSON文件中,我计划将其存储在我的服务器上,但要写入JSON,我还需要转换类型
[]byte
。现在,当我尝试检索私钥以生成公钥时,它不允许我为
*Publickey
我能想到的实现这一目标的唯一其他方法是给随机数生成器种子,这样我就可以在我的服务器上有一个秘密种子,然后我的私钥应该总是生成相同的东西,任何帮助都会很好

package main

import (
    "bytes"
    "crypto/rand"
    "crypto/rsa"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    mimicPrivateKey, err := rsa.GenerateKey(rand.Reader, 2048)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    buf := new(bytes.Buffer)
    json.NewEncoder(buf).Encode(mimicPrivateKey)
    secrets, _ := os.OpenFile("secrets.json",    os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666)
    // Close the secrets file when the surrounding function exists

    secrets.WriteString(buf.String())
    secrets.Close()

    secrets, _ = os.OpenFile("secrets.json", os.O_RDWR, 0666)
    serverKey, _ := ioutil.ReadAll(secrets)
    if serverKey != nil {
        fmt.Println("can not open key")
    }

    serverKeyPublic := &serverKey.PublicKey
}

您需要将其解组:

var data *rsa.PrivateKey
err = json.Unmarshal(serverKey, &data)
if err != nil {
    panic(err)
}
你可以用

err = ioutil.WriteFile("secrets.json", buf.Bytes(), 0666)

见:


您需要将其解组:

var data *rsa.PrivateKey
err = json.Unmarshal(serverKey, &data)
if err != nil {
    panic(err)
}
你可以用

err = ioutil.WriteFile("secrets.json", buf.Bytes(), 0666)

见:


谢谢,unmarshal工作完美您的技术很棒再次感谢。构建解决方案的另一种方式,仅供参考谢谢,unmarshal工作完美您的技术很棒再次感谢。构建解决方案的另一种方式,仅供参考