Go での ECDSA 秘密キーの保存
ecdsa.GenerateKey() を使用して ECDSA 秘密キー/公開キーのペアを生成する場合、秘密キーを安全に保存する鍵の整合性とデータのセキュリティを維持するために重要です。 Go には、公開鍵を elliptic.Marshal() でマーシャリングする場合のように、秘密鍵を直接マーシャリングする方法はありません。
推奨アプローチ
ECDSA を保存するための推奨アプローチGo の秘密鍵は、次のような複数ステップのエンコード プロセスを利用します。コンポーネント:
エンコードとデコードの例
次のコード サンプルは、推奨されるアプローチを使用した Go での ECDSA キーのエンコードとデコードを示しています。
func encode(privateKey *ecdsa.PrivateKey, publicKey *ecdsa.PublicKey) (string, string) { x509Encoded, _ := x509.MarshalECPrivateKey(privateKey) pemEncoded := pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: x509Encoded}) x509EncodedPub, _ := x509.MarshalPKIXPublicKey(publicKey) pemEncodedPub := pem.EncodeToMemory(&pem.Block{Type: "PUBLIC KEY", Bytes: x509EncodedPub}) return string(pemEncoded), string(pemEncodedPub) } func decode(pemEncoded string, pemEncodedPub string) (*ecdsa.PrivateKey, *ecdsa.PublicKey) { block, _ := pem.Decode([]byte(pemEncoded)) x509Encoded := block.Bytes privateKey, _ := x509.ParseECPrivateKey(x509Encoded) blockPub, _ := pem.Decode([]byte(pemEncodedPub)) x509EncodedPub := blockPub.Bytes genericPublicKey, _ := x509.ParsePKIXPublicKey(x509EncodedPub) publicKey := genericPublicKey.(*ecdsa.PublicKey) return privateKey, publicKey }
このアプローチでは、業界標準のエンコード技術とファイル形式。
以上がECDSA 秘密キーを Go に安全に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。