ホームページ >バックエンド開発 >Golang >Go で PKCS8 秘密キーをマーシャルするにはどうすればよいですか?

Go で PKCS8 秘密キーをマーシャルするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 15:51:03322ブラウズ

How to Marshal PKCS8 Private Keys in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。