php 편집기 Apple은 Golang에서 ECDH 개인 키를 추출하는 방법에 대한 간단한 가이드를 제공합니다. ECDH는 두 통신 당사자 간에 보안 키 교환을 설정하는 데 사용되는 비대칭 암호화 알고리즘입니다. Golang에서 ECDH 개인 키를 추출하는 것은 보안 통신을 달성하기 위한 중요한 단계 중 하나입니다. 이 기사에서는 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 }
당신이 pem
格式提取 ecdh
私钥,就像使用公钥一样。从公钥中提取私钥是不可能的(计算上不可行)。我已经为您实现了 UnmarshalECDSAPublicKey
函数(最好重命名为 MarshalECDHPrivateKey
)
다른 사람들이 MarshalECDHPublicKey
函数的评论中指出的那样,您不需要使用 base64.StdEncoding.EncodeToString(ecdhSKPEMBlock)
再次编码,因为 pem.EncodeToMemory
에 대해 말했듯이 동일한 작업을 수행하므로 문자열로 변환하면 됩니다.
위 내용은 Golang은 ECDH 개인 키를 추출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!