gpt4 book ai didi

json - 存储和检索 RSA 加密 key

转载 作者:数据小太阳 更新时间:2023-10-29 03:05:39 25 4
gpt4 key购买 nike

我正在尝试构建一个 API,但为了正确保护它,我认为我需要对存储在我的服务器上的私钥和客户端的公钥进行 RSA 加密。我已将生成的私钥存储到一个 JSON 文件中,我打算存储在我的服务器上,但要写入 JSON,我也需要转换类型 []byte。现在,当我尝试检索私钥以生成公钥时,它不会让我为 *Publickey 使用类型字节我能想到的实现这个目标的唯一其他方法是为随机数生成器播种,这样我就可以在我的服务器上将种子作为一个 secret ,然后我的私钥应该总是生成相同的东西,这将是任何帮助太好了。

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)

serverKey, err := ioutil.ReadFile("secrets.json")

参见:

package main

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

func main() {
mimicPrivateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
panic(err)
}
var buf bytes.Buffer
err = json.NewEncoder(&buf).Encode(mimicPrivateKey)
if err != nil {
panic(err)
}
err = ioutil.WriteFile("secrets.json", buf.Bytes(), 0666)
if err != nil {
panic(err)
}

serverKey, err := ioutil.ReadFile("secrets.json")
if err != nil {
panic(err)
}
var data *rsa.PrivateKey
err = json.Unmarshal(serverKey, &data)
if err != nil {
panic(err)
}
serverKeyPublic := data.PublicKey
fmt.Println(serverKeyPublic)
}

关于json - 存储和检索 RSA 加密 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40231805/

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