golang x509.MarshalPKIXPublicKey vs x509.MarshalPKCS1PublicKey()

Fen*_* Xi 7 rsa go pkix

谁能帮助我理解MarshalPKIXPublicKey()和MarshalPKCS1PublicKey()之间的区别?

根据评论:// MarshalPKIXPublicKey将公钥序列化为DER编码的PKIX格式.

// MarshalPKCS1PublicKey将RSA公钥转换为PKCS#1,ASN.1 DER表单.

什么是DER编码的PKIX格式?

谢谢

dav*_*085 12

你没有说明你没有(或确实)理解了多少.从基础开始:

ASN.1(抽象语法表示法一)是用于定义要在系统或程序之间传递或互换的数据结构的一般方案.

DER(可分辨编码规则)是定义为将ASN.1数据编码为可以传送和/或存储的字节序列的方案,并且将这些字节序列无损地解码回ASN.1数据.

PKCS1又名的RFC 2313,2437,3447,8017(公开密钥密码术标准#1)是一种标准,其定义的范围内的有关使用RSA算法,其中事情附录A定义了一个名为一个ASN.1结构RSAPublicKey来表示一个RSA公共密钥,与任何ASN.1结构一样,可以进行DER编码.

MarshalPKCS1PublicKey将RSA公钥转换为PKCS#1,ASN.1 DER表单.

清楚地表示PKCS1中RSA公钥的ASN.1结构的DER编码.

PKIX(公钥基础设施X.509)是X.509标准的互联网变体(正式地,简介),最初由当时的CCITT-ITU-T定义,目前在 rfc5280中.X.509和PKIX主要定义公钥证书的格式,该证书将公钥与身份以及其他元数据绑定在一起.要做到这一点,它必须包含一个可以处理多个公钥算法的公钥的表示,这种算法使用的SubjectPublicKeyInfo结构很简单,它由一个识别算法的AlgorithmIdentifier和一个包含该算法的BIT STRING组成.以算法为依据的实际公钥值.RSA的算法相关部分在 rfc3279 sec 2.3.1中指定,如您所见,它是来自PKCS1的RSAPublicKey结构,DER编码.

因此,RSA公钥的 "DER编码的PKIX格式" 表示PKIX/X.509 SubjectPublicKeyInfo结构的DER编码,其包含RSA的algorithmIdentifier(OID 1.2.840.113549.1.1.1和参数NULL)和包含该RSI的BIT STRING. DER编码PKCS1 RSAPublicKey.

相关或类似(尽管大多数包括私有非公共和/或PEM而不是DER):
如何存储/检索RSA公钥/私钥
如何将字符串从PEM转换为DER格式
问题传输RSA公钥,javaME,充气城堡
在Java
中生成PKCS#1格式的RSA密钥如何以PEM格式生成PKCS#1 RSA密钥?
从BigIntegers
RSA密钥转换为SubjectPublicKeyInfo表单将X509公钥转换为RSA公钥
加载公钥以创建用于公共加密
和交叉堆栈的rsa对象:
https://crypto.stackexchange.com/questions/19149/what-is- the-technical-name-for-a-public-key-container-in-der-format
https://crypto.stackexchange.com/questions/54121/rsa-key-differences-openssl-cli-vs-openssl-ssl -hc功能


归档时间:

查看次数:

702 次

最近记录:

7 年,6 月 前