Go での PKCS8 秘密鍵のマーシャリング
Go では、バージョン 1.5 で PKCS8 秘密鍵をマーシャリングする便利な方法があるかどうかという疑問が生じます。 。 x509.MarshalPKCS1PrivateKey 関数と同様に、開発者は秘密キーをシリアル化されたデータに変換するための効率的なメカニズムを求めています。
Go はこの特定の目的のための組み込み関数を提供していませんが、これに対処するカスタム ソリューションが存在します。要件:
type pkcs8Key struct { Version int PrivateKeyAlgorithm []asn1.ObjectIdentifier PrivateKey []byte } func rsa2pkcs8(key *rsa.PrivateKey) ([]byte, error) { var pkey pkcs8Key pkey.Version = 0 // Default version for PKCS8 pkey.PrivateKeyAlgorithm = make([]asn1.ObjectIdentifier, 1) pkey.PrivateKeyAlgorithm[0] = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1} // RSA encryption algorithm OID pkey.PrivateKey = x509.MarshalPKCS1PrivateKey(key) return asn1.Marshal(pkey) }
このカスタム関数 rsa2pkcs8 を使用すると、rsa.PrivateKey オブジェクトを PKCS8 でエンコードされたバイト配列に変換できます。バージョンを 0 に設定し、RSA 暗号化アルゴリズム OID を指定し、マーシャリングされた PKCS1 秘密キーを pkcs8Key 構造体の PrivateKey フィールドに埋め込みます。この構造で asn1.Marshal を呼び出すと、PKCS8 秘密鍵を表すシリアル化されたデータを取得できます。
このソリューションを利用すると、Go 開発者は PKCS8 秘密鍵をマーシャルできるようになり、さまざまな暗号化に便利なユーティリティが提供されます。操作とデータ交換のシナリオ。
以上がGo で PKCS8 秘密キーをマーシャルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。