• ISO7816-3标准ATR解析


    ISO7816-3标准ATR解析

    ATR基本应答数据如下:
    ATR格式

    1. TS 起始字符
    2. T0 格式字符
    3. TA1,TB1,TC1,TD1,… 接口字符
    4. T1,T2,… ,TK 历史字符
    5. TCK 校验字符

    标准ATR格式为:

    TS T0 TA1 TB1 TC1 TD1 TA2 TB2 TC2 TD2 TA3 TB3 TC3 TD3 ……     T1 T2…TK TCK
    
    • 1

    3B 95 11 81 11 FE 56 20 31 2E 50 D3为例:

    1.起始字符TS
    TS是ATR的强制部分,总是必须送出的。此字节只允许有两种编码:3B为正向约定,3F为反向约定。使用反向逻辑约定时, I/O的低电平状态等效于逻辑1,且该数据字节的最高位在起始位之后首先发送。使用正向逻辑约定时, I/O的高电平状态等效于逻辑1,且该数据字节的最低位在起始位之后首先发送。

    	起始字符:3B
    
    • 1
    1. 格式字符T0:95
      格式字符T0含有一组位表明将要传送哪个接口字符,它同时也指出后继历史字符的个数。像TS一样,每个ATR中都必须有这个字节。
      高半字节( b5-b8) 表示后续字符TA1到TD1是否存在。(b5对应TA1,b8对应TD1);
      低半字节( b1-b4) 表明可选历史字符的数目( 0到15);
    高半字节( b5-b8) 表示后续字符TA1到TD1是否存在。(b5对应TA1,b8对应TD1);
    T0 = 951001 01011001代表TA1和TD1存在,TA1=11,TD1=81
    低半字节( b1-b4) 表明可选历史字符的数目, 历史字符为5
    • 1
    • 2
    • 3
    1. TD1字符比较关键, TD1的高4位决定了是否有TA2/TB2/TC2/TD2。
      同理,TD2的高4位决定了是否有TA3/TB3/TC3/TD3,一直到TDx不存在。
    	TD1 =81(1000 0001)   高四位1000代表TD2存在。TD2 = 11
    	TD2 = 11     TA3 =11 , TD3不存在,循环结束。
    
    • 1
    • 2
    1. 很长一段时间,没有任何标准对历史字符做出规定,结果是随操作系统生产者而不同,它们包含了变化广泛的数据。
    历史字符为: 56 20 31 2E 50
    
    • 1
    1. TCK具有一个检验复位应答期间所发送数据完整性的值。TCK的值应使从T0到包括TCK在内的所有字节进行异或运算的结果为零。

      当没有TD1时,T=0,则TCK不存在。

      如果在ATR中仅指出了T=0协议,TCK校验和可以不在ATR的尾部出现。在这种情况下,完全没有发送它,因为用奇偶校验已经知道了差错字节而在T=0协议中重复发送出错字节又是强制性的。相反,在T=1协议中,TCK字节必须出现,校验和的计算从字节T0开始,结束于最后的接口字符,如果有则是最后的历史字符。

    	TCK = D3
    
    • 1

    原文链接:https://blog.csdn.net/creator_ly/article/details/79622197

  • 相关阅读:
    沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置
    保护 Web 服务器安全性
    量子计算的奥秘与魅力:开启未来科技的钥匙(详解)
    数学王国找寻另一半:求一个整数的真因子总和,算法优化解决方案超时问题
    [资源推荐] 关于计算机毕设的方法论(重庆大学吕昱峰)
    【自然语言实战】机器学习之基于评论内容的主题分类模型
    中国女士职业套装行业深度调研及投资前景预测研究报告
    java Object类型转Map
    CSS之伪类和伪元素 | :before和::before
    org.apache.sshd的SshClient客户端 连接服务器执行命令 示例
  • 原文地址:https://blog.csdn.net/Haomione/article/details/126617392