ホームページ  >  記事  >  バックエンド開発  >  Go でファイルから RSA キーを読み取る方法は?

Go でファイルから RSA キーを読み取る方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 18:24:02442ブラウズ

How to Read an RSA Key from a File in Go?

ファイルから RSA キーを読み取る方法

背景: RSA キーは、安全な通信のための暗号化で広く使用されています。 RSA ベースのシステムを実装する場合、多くの場合、認証または署名の目的でファイルから既存の秘密キーをロードする必要があります。ただし、ファイルから事前に生成されたキーに基づいてキー構造を構築する方法についての包括的な手順を見つけるのは難しい場合があります。

解決策: ファイルから RSA キーを読み取るには、次のようにします。次の手順を利用できます:

オプション 1: PKCS#1 エンコードされたキー

  1. 秘密キーが PKCS#1 形式でエンコードされていることを確認します。通常、これは「-----BEGIN RSA PRIVATE KEY-----」で始まります。
  2. encoding/pem パッケージの Decode([]byte(pemString)) を使用して PEM エンコードされた文字列をデコードします。
  3. x509 パッケージの ParsePKCS1PrivateKey(block.Bytes) を使用して、生のキー バイトを *rsa.PrivateKey に解析します。

オプション 2: PKCS#8 エンコード キー

  1. 秘密キーが PKCS#8 形式でエンコードされていることを確認します。通常、この形式は「-----BEGIN PRIVATE KEY-----」で始まります。
  2. オプション 1 の PEM エンコード文字列。
  3. x509 パッケージの ParsePKCS8PrivateKey(block.Bytes) を使用して、生のキー バイトを *rsa.PrivateKey に解析します。

コード例:

// PKCS#1 Encoded Key Example
package main

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
)

func main() {
    keyPEMString := `-----BEGIN RSA PRIVATE KEY-----
    ... (Your PKCS#1 key here)
    -----END RSA PRIVATE KEY-----`

    keyData, _ := pem.Decode([]byte(keyPEMString))
    key, _ := x509.ParsePKCS1PrivateKey(keyData.Bytes)
    fmt.Println(key.N) // Access the RSA modulus
}

// PKCS#8 Encoded Key Example
package main

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
)

func main() {
    keyPEMString := `-----BEGIN PRIVATE KEY-----
    ... (Your PKCS#8 key here)
    -----END PRIVATE KEY-----`

    keyData, _ := pem.Decode([]byte(keyPEMString))
    key, _ := x509.ParsePKCS8PrivateKey(keyData.Bytes)
    rsaKey := key.(*rsa.PrivateKey)
    fmt.Println(rsaKey.N) // Access the RSA modulus
}

これらのメソッドに従うと、ファイルから RSA キーを正常に読み取ってインスタンス化し、アプリケーションで RSA ベースの操作を実行できるようになります。

以上がGo でファイルから RSA キーを読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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