当前位置: 首页 > news >正文

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

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. 格式字符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. 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. 很长一段时间,没有任何标准对历史字符做出规定,结果是随操作系统生产者而不同,它们包含了变化广泛的数据。
历史字符为: 56 20 31 2E 50
  1. TCK具有一个检验复位应答期间所发送数据完整性的值。TCK的值应使从T0到包括TCK在内的所有字节进行异或运算的结果为零。

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

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

	TCK = D3

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

相关文章:

  • 谨慎redis的timeout参数
  • PHP 实例 - AJAX 与 XML
  • 期货开户每日无负债结算制度
  • Redis、JVM、并发、MySQL、Java、网络等一个你都“啃”不完,何谈BAT?
  • 详解 docker save 与 docker export 的区别
  • 【华为账号服务】【FAQ】Account Kit常见咨询合集--获取帐号个人信息相关问题
  • 每个人都可以用的开源微信机器人
  • 一幅长文细学华为MRS大数据开发(四)——HBase
  • Vue2、Vue3知识总结---完整版✨
  • ISME| 南农大沈其荣院士团队最新揭示根际微生物组成变化可更早预测番茄青枯病
  • java基于 ssm+jsp的线上授课作业管理系统
  • 一、Win10安装并检测GPU版本Pytorch
  • 远程调试 idea配置remote debug、在远程服务器的程序中,添加JVM启动参数-Xdebug
  • Google Earth Engine(GEE)——一个简单的时序动画UI
  • L74.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nmap和tcpdump
  • 2017-08-04 前端日报
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • github指令
  • Linux各目录及每个目录的详细介绍
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 警报:线上事故之CountDownLatch的威力
  • 力扣(LeetCode)56
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端设计模式
  • 首页查询功能的一次实现过程
  • 微服务框架lagom
  • 小程序开发中的那些坑
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #if #elif #endif
  • #pragma once
  • #微信小程序:微信小程序常见的配置传旨
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (十六)串口UART
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .project文件
  • @Builder用法
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [C#]winform部署yolov9的onnx模型
  • [CF407E]k-d-sequence
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [Java]深入剖析常见排序
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [JS]JavaScript 简介