如何将字符串值转换为 ASN.1 值
How to convert string value to ASN.1 value
我正在尝试根据一些示例将某些值转换为 ASN.1 格式,但我未能成功理解示例 ASN.1 值的某些部分...
首先,我有以下 ASN.1 值:13024252
以字符串格式使用的值是:BR
十六进制的 BR 是 ASN.1 值的最后一部分:4252
1302 是什么?
第二个例子很相似:
ASN.1 值:130d31333335333233363030313839
以字符串格式使用的这个值是:1335323600189
十六进制的 1335323600189 是 ASN.1 值的最后一部分:31333335333233363030313839
130d 是多少?
我必须对字符串值进行编码,因为我必须为证书创建 subject_dn,而 subject_dn 的某些部分采用 ASN.1 格式。
使用 node-forge 我可以获得字符串格式的属性值,但无法将它们转换为 ASN.1 格式。
What's the 1302?
13
(十六进制)是 ASN.1 类型 -- PrintableString
02
(十六进制)是以字节为单位的类型内容长度。 2个字节。接下来的两个字节是类型值(在您的例子中是一个字符串)。与您的第二个示例相同。
ASN.1 类型使用 TLV(标签长度值)结构进行编码。您可以在这里阅读更多相关信息:DER Transfer Syntax.
请记住,专有名称是一个更复杂的结构,它是一个 SEQUENCE OF RelativeDistinguishedName,而后者又是一个 SET OF AttributeTypeAndValue:
DistinguishedName ::= RDNSequence
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET SIZE (1..MAX) OF
AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
中的完整架构
我正在尝试根据一些示例将某些值转换为 ASN.1 格式,但我未能成功理解示例 ASN.1 值的某些部分...
首先,我有以下 ASN.1 值:13024252
以字符串格式使用的值是:BR
十六进制的 BR 是 ASN.1 值的最后一部分:4252
1302 是什么?
第二个例子很相似:
ASN.1 值:130d31333335333233363030313839
以字符串格式使用的这个值是:1335323600189
十六进制的 1335323600189 是 ASN.1 值的最后一部分:31333335333233363030313839
130d 是多少?
我必须对字符串值进行编码,因为我必须为证书创建 subject_dn,而 subject_dn 的某些部分采用 ASN.1 格式。 使用 node-forge 我可以获得字符串格式的属性值,但无法将它们转换为 ASN.1 格式。
What's the 1302?
13
(十六进制)是 ASN.1 类型 -- PrintableString
02
(十六进制)是以字节为单位的类型内容长度。 2个字节。接下来的两个字节是类型值(在您的例子中是一个字符串)。与您的第二个示例相同。
ASN.1 类型使用 TLV(标签长度值)结构进行编码。您可以在这里阅读更多相关信息:DER Transfer Syntax.
请记住,专有名称是一个更复杂的结构,它是一个 SEQUENCE OF RelativeDistinguishedName,而后者又是一个 SET OF AttributeTypeAndValue:
DistinguishedName ::= RDNSequence
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET SIZE (1..MAX) OF
AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
中的完整架构