MarshalPKIXPublicKey()와 MarshalPKCS1PublicKey()의 차이점 이해
Go 표준 라이브러리에서는 x509.MarshalPKIXPublicKey()와 x509.MarshalPKCS1PublicKey를 사용합니다. ()는 공개 키를 DER 인코딩 형식으로 직렬화하는 두 가지 기능입니다.
ASN.1 및 DER
두 기능 간의 차이점을 살펴보기 전에 , 두 가지 주요 개념을 이해하는 것이 중요합니다.
-
ASN.1(Abstract Syntax Notation One): 시스템 간에 공유되는 데이터 구조를 설명하기 위해 널리 사용되는 표기 시스템입니다.
-
DER(Distinguished Encoding Rules): ASN.1 데이터를 컴팩트 바이너리 형식으로 표현하는 데 사용되는 특정 인코딩 체계.
MarshalPKCS1PublicKey()
- RSA 공개 키를 PKCS#1 ASN.1 구조의 DER 인코딩 표현으로 직렬화합니다.
- PKCS#1 표준은 RSA 공개 키를 나타내는 방법을 정의합니다. 모듈러스 및 지수.
- 이 함수는 PKCS#1의 RSAPublicKey ASN.1 구조를 사용하여 공개 키를 DER로 인코딩된 문자열로 인코딩합니다.
MarshalPKIXPublicKey()
- 공개 키를 PKIX/X.509의 SubjectPublicKeyInfo 구조에 대한 DER 인코딩 표현으로 직렬화합니다.
- PKIX/X.509는 X.509의 인터넷 변형입니다. 표준이며 해당 SubjectPublicKeyInfo 구조는 다양한 공개 키 알고리즘을 나타내는 보다 일반적인 방법을 정의합니다.
- RSA 공개 키의 경우 이 DER 인코딩 표현에는 RSA(OID 1.2.840.113549.1.1.1)에 대한 알고리즘 식별자가 포함됩니다. DER로 인코딩된 PKCS#1 RSAPublicKey 구조와 함께 매개변수 NULL.
위 내용은 Go에서 `MarshalPKIXPublicKey()`와 `MarshalPKCS1PublicKey()`의 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!