智能卡的数据压缩
发布时间:2008/11/22 0:00:00 访问次数:380
众所周知,智能卡中可以利用的存储量是非常有限的,因此,在应用者与管理者之间就一再出现用数据压缩来改进这种状况的愿望。数据压缩的基本原理如图1所示。
图1 对存储数据进行数据压缩的基本原理
在采用数据压缩之前,必须要考虑一些问题。首先,算法不能占用太多的编码空间,而是只需用很少的bam;第2,应当能达到一个可接受的压缩速度,压缩因子倒不是那么重要,因为在每一种情况下数据量至多不过数百字节;第3,只有无损压缩法才能被智能卡考虑,因为解压后的数据必须和原来的数据相同。目前,两种常用于智能卡的方法是游程长度(nm length)编码和可变长度(variable length)编码。
对于游程长度编码,一个不问断的相同数据的序列可用重复次数和重复的对象(例如,某个字符)所代替;而可变长度编码,则分析固定长度(例如,一个字节)的字符的出现频率,把最常出现的字符用最短长度的符号代替(huffman编码),不太经常出现的字符则用较长的代码编码。
在静态的可变长度编码中,这些代换是按一个预定的表进行的,而可变长度编码的动态方案中,首先要对原始数据中字符的分布频率进行分析,在此基础上来构造代换表;第3种变型是自适应可变长度编码,在压缩过程中要不断更新代换表以便达到最佳的压缩。
动态和自适应可变长度编码,由于其算法的复杂性和需占用大量的存储空间而超出了智能卡的范围。于是,游程长度编码和静态可变长度编码就成了智能卡现实的可二中择一的方案了。游程长度编码算法的编程不需用太多的代码,但其缺点是仅适用于重复性的数据。例如,图像数据就特别合用,因为在图像中经常含有大量具有相同数值的区域。对称密钥加密算法则完全不适合用这种算法来压缩,因为它们的特点是随机数。
静态可变长度编码是智能卡中采用的第2种压缩法。它可以很好地用于含有电话目录信息的文件中,因为所存储的数据结构是已知的,并可永久性地结合到算法之中,通常电话号码是仅由0~9的数字加上少量特殊符号,例如由“*”和“#”组成,如果在名字中仅允许使用大写字母,则代换表中只需要考虑字母表中的26个字符。类似地,某些字母在名字中出现的可能要比其他字母少得多,对编码的影响就比较小。对电话目录来说,节约30%的存储空间(和未被压缩的数据相比)是完全可以达到的。然而,这里并未考虑压缩算法所占据的存储容量。
关于智能卡的数据压缩,有些事是必须考虑的。最理想地是:它在操作系统中进行,对外部世界是完全透明的,使得可以用标准的命令对未压缩的数据进行读写;也可以只对某些种类的数据实施压缩。例如,试图压缩程序代码和密钥的后果是不能使人满意的,在应用设计时必须把这些都估算在内。否则,本来是期望能节省所需的存储量,将由于“压缩”而需用更多的的存储空间(在最坏情况下)。
到目前为止,以上这些都是数据压缩在智能卡中的应用十分保守的理由。在特殊的应用中,如长途通信部门所用的卡中的电话目录,有时使用数据压缩算法。对于通用操作系统和事先不知道数据结构的应用,采用数据压缩不能得到令人满意的结果。由于压缩算法需要占用额外的存储空间,应当避免使用。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
众所周知,智能卡中可以利用的存储量是非常有限的,因此,在应用者与管理者之间就一再出现用数据压缩来改进这种状况的愿望。数据压缩的基本原理如图1所示。
图1 对存储数据进行数据压缩的基本原理
在采用数据压缩之前,必须要考虑一些问题。首先,算法不能占用太多的编码空间,而是只需用很少的bam;第2,应当能达到一个可接受的压缩速度,压缩因子倒不是那么重要,因为在每一种情况下数据量至多不过数百字节;第3,只有无损压缩法才能被智能卡考虑,因为解压后的数据必须和原来的数据相同。目前,两种常用于智能卡的方法是游程长度(nm length)编码和可变长度(variable length)编码。
对于游程长度编码,一个不问断的相同数据的序列可用重复次数和重复的对象(例如,某个字符)所代替;而可变长度编码,则分析固定长度(例如,一个字节)的字符的出现频率,把最常出现的字符用最短长度的符号代替(huffman编码),不太经常出现的字符则用较长的代码编码。
在静态的可变长度编码中,这些代换是按一个预定的表进行的,而可变长度编码的动态方案中,首先要对原始数据中字符的分布频率进行分析,在此基础上来构造代换表;第3种变型是自适应可变长度编码,在压缩过程中要不断更新代换表以便达到最佳的压缩。
动态和自适应可变长度编码,由于其算法的复杂性和需占用大量的存储空间而超出了智能卡的范围。于是,游程长度编码和静态可变长度编码就成了智能卡现实的可二中择一的方案了。游程长度编码算法的编程不需用太多的代码,但其缺点是仅适用于重复性的数据。例如,图像数据就特别合用,因为在图像中经常含有大量具有相同数值的区域。对称密钥加密算法则完全不适合用这种算法来压缩,因为它们的特点是随机数。
静态可变长度编码是智能卡中采用的第2种压缩法。它可以很好地用于含有电话目录信息的文件中,因为所存储的数据结构是已知的,并可永久性地结合到算法之中,通常电话号码是仅由0~9的数字加上少量特殊符号,例如由“*”和“#”组成,如果在名字中仅允许使用大写字母,则代换表中只需要考虑字母表中的26个字符。类似地,某些字母在名字中出现的可能要比其他字母少得多,对编码的影响就比较小。对电话目录来说,节约30%的存储空间(和未被压缩的数据相比)是完全可以达到的。然而,这里并未考虑压缩算法所占据的存储容量。
关于智能卡的数据压缩,有些事是必须考虑的。最理想地是:它在操作系统中进行,对外部世界是完全透明的,使得可以用标准的命令对未压缩的数据进行读写;也可以只对某些种类的数据实施压缩。例如,试图压缩程序代码和密钥的后果是不能使人满意的,在应用设计时必须把这些都估算在内。否则,本来是期望能节省所需的存储量,将由于“压缩”而需用更多的的存储空间(在最坏情况下)。
到目前为止,以上这些都是数据压缩在智能卡中的应用十分保守的理由。在特殊的应用中,如长途通信部门所用的卡中的电话目录,有时使用数据压缩算法。对于通用操作系统和事先不知道数据结构的应用,采用数据压缩不能得到令人满意的结果。由于压缩算法需要占用额外的存储空间,应当避免使用。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)