【问题标题】:Mystery: 4 Bytes should represent a Date, but how?谜团:4 个字节应该代表一个日期,但如何?
【发布时间】:2012-05-22 16:37:02
【问题描述】:

所以我已经能够从德国官方智能卡中读取一些不安全的值。 它适用于数字和字符串,但我不知道如何解释日期。

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

我读到的四个字节是:

0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)

并且应该代表这个日期:20.02.2012 二进制:

20 - 0001 0100
02 - 0000 0010
2012 - 0111 1101 1100

另一个:

0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)

应表示:19.02.2017

19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001

请帮我解决这个编码谜题


卡上的数据可以被商业软件读取,所以我想我得到的原始数据可以以任何方式使用。

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

【问题讨论】:

    标签: c# smartcard winscard


    【解决方案1】:

    链接的规范说cardIssueDateTimeReal 类型(第2.20 节)。同一规范将 TimeReal 定义为自 1970-01-01 00:00:00 GMT(即 UNIX time)以来的秒数,编码为 ASN.1 INTEGER(第 2.110 节。)。

    【讨论】:

    • :(你说得对。我什至想过但在验证时出错了。非常感谢!
    • 左边哪个使用大端/MSB,不管是什么平台,别忘了检查你使用的是大端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多