>  기사  >  백엔드 개발  >  Golang은 ECDH 개인 키를 추출합니다.

Golang은 ECDH 개인 키를 추출합니다.

WBOY
WBOY앞으로
2024-02-12 21:40:10689검색

Golang 提取 ECDH 私钥

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
}

Solution

당신이 pem 格式提取 ecdh 私钥,就像使用公钥一样。从公钥中提取私钥是不可能的(计算上不可行)。我已经为您实现了 UnmarshalECDSAPublicKey 函数(最好重命名为 MarshalECDHPrivateKey)

을 사용하고 싶다고 가정합니다. 으아악

다른 사람들이 MarshalECDHPublicKey 函数的评论中指出的那样,您不需要使用 base64.StdEncoding.EncodeToString(ecdhSKPEMBlock) 再次编码,因为 pem.EncodeToMemory에 대해 말했듯이 동일한 작업을 수행하므로 문자열로 변환하면 됩니다.

위 내용은 Golang은 ECDH 개인 키를 추출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제