谁能帮助我了解MarshalPKIXPublicKey()和MarshalPKCS1PublicKey()之间的区别?
根据注释:// MarshalPKIXPublicKey将公共密钥序列化为DER编码的PKIX格式。
// MarshalPKCS1PublicKey将RSA公钥转换为PKCS#1,ASN.1 DER格式。
什么是DER编码的PKIX格式?
谢谢
您不清楚您不了解的程度。从基础开始:
ASN.1 (抽象语法符号1)是用于定义要在系统或程序之间传递或交换的数据结构的通用方案。
DER (可分辨编码规则)是一种定义为将ASN.1数据编码为可以通信和/或存储的字节序列,并将这些字节序列无损解码回ASN.1数据的方案。
PKCS1 又名的RFC 2313,2437,3447,8017(公开密钥密码术标准#1)是一种标准,其定义的范围内的有关使用RSA算法,其中事情附录A定义了一个名为一个ASN.1结构RSAPublicKey来表示一个RSA公共密钥,就像任何ASN.1结构一样,都可以进行DER编码。
RSAPublicKey
MarshalPKCS1PublicKey将RSA公钥转换为PKCS#1,ASN.1 DER形式。
显然是指PKCS1中RSA公钥的ASN.1结构的DER编码。
PKIX (公钥基础结构X.509)是X.509标准的Internet变体(正式而言是配置文件),最初由当时的CCITT-now-ITU-T定义,当前位于 rfc5280中。X.509和PKIX主要定义了公钥 证书 的格式,该格式将公钥与其他元数据绑定到身份。为此,它必须包含一个可以处理多种公钥算法的公钥表示,这是使用一种SubjectPublicKeyInfo结构完成的,该结构相当简单地由标识算法的AlgorithmIdentifier以及包含以下内容的BIT STRING组成:取决于算法的实际公钥值。RSA的算法相关部分在 rfc3279 sec2.3.1中指定 如您所见,它是PKCS1的DER编码的RSAPublicKey结构。
SubjectPublicKeyInfo
因此 ,RSA公钥的 “ DER编码的PKIX格式” 是 指PKIX / X.509SubjectPublicKeyInfo结构的DER编码,其中包含RSA的algorithmIdentifier(OID1.2.840.113549.1.1.1和参数NULL)以及包含DER编码的PKCS1 RSAPublicKey。