security - 使用 SecAsn1Decode 解析 DER 格式数据
问题描述
我正在尝试使用SecAsn1Decode
以解析以下 DER 编码数据。
但是,我没有为这个结构定义模板(用 表示SecAsn1Template
)。
也许任何人都可以解释如何为以下 DER 结构创建模板:
这是二进制原始数据(DER 格式)
30 81 8E 31 0B 30 09 06 03 55 04 06 13 02 49 4C
31 0F 30 0D 06 03 55 04 08 0C 06 69 73 72 61 65
6C 31 0C 30 0A 06 03 55 04 07 0C 03 54 4C 56 31
0B 30 09 06 03 55 04 0A 0C 02 54 53 31 1E 30 1C
06 03 55 04 0B 0C 15 43 41 5F 63 65 72 74 69 66
69 63 61 74 65 5F 73 65 72 76 65 72 31 1B 30 19
06 03 55 04 03 0C 12 61 61 61 61 61 61 61 4D 61
63 42 6F 6F 6B 5F 50 72 6F 31 16 30 14 06 09 2A
86 48 86 F7 0D 01 09 01 16 07 7A 40 7A 2E 63 6F
6D
这是使用 asn1 java 解码器https://lapo.it/asn1js对此数据的解释
EQUENCE (7 elem)
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.6 countryName (X.520 DN component)
PrintableString aa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.8 stateOrProvinceName (X.520 DN component)
UTF8String aaaaaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.7 localityName (X.520 DN component)
UTF8String aaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.10 organizationName (X.520 DN component)
UTF8String TS
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.11 organizationalUnitName (X.520 DN component)
UTF8String CA_certificate_server
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component)
UTF8String aaaaaaaaaaaaaaaaaa
SET (1 elem)
SEQUENCE (2 elem)
OBJECT IDENTIFIER 1.2.840.113549.1.9.1 emailAddress (PKCS #9. Deprecated, use an altName extension instead)
IA5String a@a.com
解决方案
它是 DER/BER TLV 数据。
这是使用https://iso8583.info/lib/ISO/8825/1/BER/TLVs解析的详细数据
TLVs:#"30818E310B300906035504061302494C310F300D06035504080C06697372..6F6D" # ASN.1, Basic Encoding Rules (BER), Tag + Length + Value (TLV) series
- x30:#"30818E310B300906035504061302494C310F300D06035504080C06697372..6F6D" # SEQUENCE
- tag: "30"
- len: "818E" # // 142
- val:#"310B300906035504061302494C310F300D06035504080C0669737261656C..6F6D"
- x31:#"310B300906035504061302494C" # SET
- tag: "31"
- len: "0B" # // 11
- val:#"300906035504061302494C"
- x30:#"300906035504061302494C" # SEQUENCE
- tag: "30"
- len: "09" # // 9
- val:#"06035504061302494C"
- x06:#"0603550406" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550406" # // 2 5 4 6 - joint-iso-itu-t.ds.attributeType.countryName
- x13:#"1302494C" # PrintableString
- tag: "13"
- len: "02" # // 2
- val: "494C" # // IL
- x31:#"310F300D06035504080C0669737261656C" # SET
- tag: "31"
- len: "0F" # // 15
- val:#"300D06035504080C0669737261656C"
- x30:#"300D06035504080C0669737261656C" # SEQUENCE
- tag: "30"
- len: "0D" # // 13
- val:#"06035504080C0669737261656C"
- x06:#"0603550408" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550408" # // 2 5 4 8
- x0C:#"0C0669737261656C" # UTF8String
- tag: "0C"
- len: "06" # // 6
- val: "69737261656C" # // israel
- x31:#"310C300A06035504070C03544C56" # SET
- tag: "31"
- len: "0C" # // 12
- val:#"300A06035504070C03544C56"
- x30:#"300A06035504070C03544C56" # SEQUENCE
- tag: "30"
- len: "0A" # // 10
- val:#"06035504070C03544C56"
- x06:#"0603550407" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550407" # // 2 5 4 7 - joint-iso-itu-t.ds.attributeType.localityName
- x0C:#"0C03544C56" # UTF8String
- tag: "0C"
- len: "03" # // 3
- val: "544C56" # // TLV
- x31:#"310B3009060355040A0C025453" # SET
- tag: "31"
- len: "0B" # // 11
- val:#"3009060355040A0C025453"
- x30:#"3009060355040A0C025453" # SEQUENCE
- tag: "30"
- len: "09" # // 9
- val:#"060355040A0C025453"
- x06:#"060355040A" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "55040A" # // 2 5 4 10 - joint-iso-itu-t.ds.attributeType.organizationName
- x0C:#"0C025453" # UTF8String
- tag: "0C"
- len: "02" # // 2
- val: "5453" # // TS
- x31:#"311E301C060355040B0C1543415F63657274696669636174655F736572766572" # SET
- tag: "31"
- len: "1E" # // 30
- val:#"301C060355040B0C1543415F63657274696669636174655F736572766572"
- x30:#"301C060355040B0C1543415F63657274696669636174655F736572766572" # SEQUENCE
- tag: "30"
- len: "1C" # // 28
- val:#"060355040B0C1543415F63657274696669636174655F736572766572"
- x06:#"060355040B" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "55040B" # // 2 5 4 11 - joint-iso-itu-t.ds.attributeType.organizationUnitName
- x0C:#"0C1543415F63657274696669636174655F736572766572" # UTF8String
- tag: "0C"
- len: "15" # // 21
- val: "43415F63657274696669636174655F736572766572" # // CA_certificate_server
- x31:#"311B301906035504030C12616161616161614D6163426F6F6B5F50726F" # SET
- tag: "31"
- len: "1B" # // 27
- val:#"301906035504030C12616161616161614D6163426F6F6B5F50726F"
- x30:#"301906035504030C12616161616161614D6163426F6F6B5F50726F" # SEQUENCE
- tag: "30"
- len: "19" # // 25
- val:#"06035504030C12616161616161614D6163426F6F6B5F50726F"
- x06:#"0603550403" # Object Identifier (OID)
- tag: "06"
- len: "03" # // 3
- val: "550403" # // 2 5 4 3 - joint-iso-itu-t.ds.attributeType.commonName
- x0C:#"0C12616161616161614D6163426F6F6B5F50726F" # UTF8String
- tag: "0C"
- len: "12" # // 18
- val: "616161616161614D6163426F6F6B5F50726F" # // aaaaaaaMacBook_Pro
- x31:#"3116301406092A864886F70D01090116077A407A2E636F6D" # SET
- tag: "31"
- len: "16" # // 22
- val:#"301406092A864886F70D01090116077A407A2E636F6D"
- x30:#"301406092A864886F70D01090116077A407A2E636F6D" # SEQUENCE
- tag: "30"
- len: "14" # // 20
- val:#"06092A864886F70D01090116077A407A2E636F6D"
- x06:#"06092A864886F70D010901" # Object Identifier (OID)
- tag: "06"
- len: "09" # // 9
- val: "2A864886F70D010901" # // 1 2 840 113549 1 9 1 - iso.member-body.us.rsadsi.pkcs.pkcs-9.emailAddress
- x16:#"16077A407A2E636F6D" # IA5String
- tag: "16"
- len: "07" # // 7
- val: "7A407A2E636F6D" # // z@z.com
推荐阅读
- datetime - 在 TimeOfDay 类中查找时间之间的差异,例如 (10:50 - 08:00 = 02:50)
- r - 在R中绘制,多行,按变量分组
- ruby - 拆分客户端 gem 的拆分 io 存根请求问题
- robotframework - 如何摆脱机器人固件 Python 中的错误“不存在的设置‘套件设置’”
- html - 如何切换多个浮动右元素的顺序?
- matlab - 如何在 Simulink 中实现时间相关的指数函数
- php - php cron timeout - 在后台运行脚本
- php - 使用 PHP 在 MySql 中上传图片
- jquery - 如果 div 有类删除类或者添加一个新类
- c++ - ESP32 意外重启 - 有问题的变量?