php エディター Apple は、Golang で ECDH 秘密キーを抽出するための簡潔なガイドを提供します。 ECDH は、2 つの通信当事者間で安全なキー交換を確立するために使用される非対称暗号化アルゴリズムです。 Golang では、ECDH 秘密キーの抽出は安全な通信を実現するための重要な手順の 1 つです。この記事では、Golang プログラミング言語を使用して ECDH 秘密キーを抽出する方法の詳細な手順と注意事項を紹介し、この重要なスキルをすぐに習得できるようにします。初心者でも経験豊富な開発者でも、この記事は役立つガイダンスと実践的なコード例を提供します。始めましょう!
ECDH秘密鍵は公開鍵のスーパーセットであることは知っています。タスクは秘密キー ecdh を抽出することです。
PublicKey の生成方法は次のとおりです。
import ( "crypto/ecdh" "crypto/rand" "crypto/ecdsa" "crypto/x509" "encoding/base64" "encoding/pem" "fmt" ) func main() { alicePrivateKey, err := ecdh.P256().GenerateKey(rand.Reader) alicePublicKey, err := MarshalECDHPublicKey(alicePrivateKey.PublicKey()) if err != nil { fmt.Errorf("failed to marshal public key into PKIX format") } fmt.Printf("alicePubK => %s\n", alicePublicKey) clientECDSAPubKey, err := UnmarshalECDSAPublicKey(alicePublicKey) if err != nil { panic(err) } println(clientECDSAPubKey) println("no error") } func MarshalECDHPublicKey(pk *ecdh.PublicKey) (string, error) { ecdhSKBytes, err := x509.MarshalPKIXPublicKey(pk) if err != nil { return "", fmt.Errorf("failed to marshal public key into PKIX format") } ecdhSKPEMBlock := pem.EncodeToMemory( &pem.Block{ Type: "PUBLIC KEY", Bytes: ecdhSKBytes, }, ) return base64.StdEncoding.EncodeToString(ecdhSKPEMBlock), nil }
公開キーの場合と同様に、ecdh
秘密キーを pem
形式で抽出したいと考えます。公開鍵から秘密鍵を抽出することは不可能です (計算上実行不可能です)。 UnmarshalECDSAPublicKey
関数を実装しました (名前を MarshalECDHPrivateKey
に変更することをお勧めします)
他の人が MarshalECDHPublicKey
関数に関するコメントで指摘しているように、再度エンコードするために base64.StdEncoding.EncodeToString(ecdhSKPEMBlock)
を使用する必要はありません。 pem.EncodeToMemory も同じことを行い、文字列に変換するだけです。
以上がGolang は ECDH 秘密キーを抽出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。