谜团:4个字节应该代表一个日期,但是如何?

rre*_*ach 2 c# smartcard winscard

所以我已经能够从官方的德国智能卡中读取一些不安全的值.它适用于Numbers和Strings,但我无法理解如何解释Dates.

我想要阅读的日期指定为4字节日期,如规范中所示:http://imgur.com/3jU8k

我读的四个字节是:

0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)
Run Code Online (Sandbox Code Playgroud)

并应代表此日期:20.02.2012二进制:

20 - 0001 0100
02 - 0000 0010
2012 - 0111 1101 1100
Run Code Online (Sandbox Code Playgroud)

另一个:

0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)
Run Code Online (Sandbox Code Playgroud)

应代表:19.02.2017

19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个编码谜语


来自卡的数据可以通过商业软件读取,因此我猜我得到的原始数据可以以任何方式使用.

对于感兴趣的:供应商有一个非常庞大的规格,我已经搜索了很多次(http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002R1360:DE:NOT多个可用语言)卡的结构首先在第119页提到

dtb*_*dtb 7

链接的规范说明cardIssueDate 类型TimeReal(第2.20节).相同的规范定义TimeReal为自1970-01-01 00:00:00 GMT(即UNIX时间)以来编码为ASN.1 INTEGER(第2.110节)的秒数.