话说智能卡的文件种类
文章出处:http://www.singbon.com 作者: 人气: 发表时间:2012年02月21日
按照ISO7816-4的定义,智能卡的数据存储也是按照文件的方式进行的。这里所说的数据多指可以通过终端进行访问的数据,一些智能卡的内部数据(不能通过终端进行访问的)究竟采取什么样的存储方式完全取决于智能卡OS的设计者。
从大类来分,智能卡的文件类型分为专用文件DF(Dedicated File)和基本文件EF(Elementary File)。其中DF的作用类似于计算机系统中的目录或者文件夹,而EF才是用来存储数据的。
根据树状结构,一张卡片中必须有且仅有一个根目录即:MF(Master File),也称作主控文件。其他所有的DF和EF都位于MF之下。MF是一个特殊的DF,在卡片复位后被默认选中,也就是说,当卡片复位之后即处于MF 目录下。
对于文件的操作可以通过隐性选择和显性选择两种方式,其中显性选择就是通过Select File命令直接选择,而隐性选择则是通过读写文件命令利用短文件标识来指出具体访问的是哪个文件。
通常对于DF文件只有通过显性直接选择的方式才能选中,而对于EF则即可以通过显性选择,也可以通过隐性选择的方式来访问。
每个DF和EF都有自己的文件标识FID,FID用两个字节来表示,其中3F00是MF专用的标识,而FFFF是保留数据不能用作文件标识。对于EF而言除了FID,还有短文件标识SFI,通常为FID的后5位数据;对于DF而言除了FID之外还有DF名也可以用来选择这个DF文件。
在进行卡片应用数据定义时,通常把同一个应用的基本数据文件都定义在某一个DF下,从而这个DF也可以被称作应用专用文件ADF(Application DF)。如果这个ADF处于另一个DF之下,那么那个DF就叫做目录DDF(Directory DF)。简单来说,如果一个DF下面只有EF,那么这个DF就可以称作ADF,如果一个DF下面既有DF又有EF,那么这个DF就可以称作DDF。
作为基本文件EF又可以分为:透明二进制文件和记录文件两大类。透明二进制文件存储的数据按照数据块的方式进行访问,可以通过偏移地址和读写长度来进行访问。而记录文件则是按照一条一条的记录来进行数据访问的。记录文件还可以进一步细分为线性定长记录、线性变长记录和循环记录三种格式。
线性定长记录:每条记录的长度都相同,在追加记录时记录号顺序递增;线性变长记录:每条记录的长度可以不同,在追加记录时记录号顺序递增;循环记录:这是一个比较特殊的记录文件,每条记录的长度相同,但是在追加记录时记录号并不是顺序递增的,而是和记录的添加顺序反向,即最后追加的记录始终是第一号记录,最早追加的记录号最大。而且当添加的记录达到文件空间的极限之后,如果再继续添加记录的话,最早的记录将会被最新的记录所覆盖。
对于透明二进制文件可以通过Read Binary和Update Binary两条命令来访问,而对于记录文件(不论什么样的记录文件)可以用Read Record和Update Record以及Append Record来访问。