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 중국어 웹사이트의 기타 관련 기사를 참조하세요!