【发布时间】:2017-03-07 00:30:13
【问题描述】:
我正在尝试构建一个 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
}
【问题讨论】:
标签: json encryption go rsa decode