智能卡中填补数据

时间:2008-11-21

  在智能卡中,DES算法主要用于两种面向字组的ECB和CBC模式。然而,因为和卡通信的数据并不总是严格满足某个数量的字组,有些时候必须填补一个字组。把一个数据字组扩充到其长度是给定字组大小的整倍数被称为填补(Padding)。

  解密后的填补的数据组在接收数据时有一个问题,因为接收者不知道实际的数据是在那里结束而开始填补字节的。一个解决的办法是在报文的开头说明报文的长度,但这将改变数据的结构,一般而言是不希望的。对于那些通常不加密的数据来说,这将是特别繁重的负担,因为这时不需要填补,因而也没有长度信息。在许多情况下,报文的结构可以不必改变。

  这就是说必须用不同的方法来识别填补的字节。作为一项规则,普遍采用如下算法,它规定在ISO/IEC 9797标准中。接着用数据的第1个填补字节的位(msb)被置为1。于是,此字节的十六进制值为′80′,如果还需要另外的填补字节时其值为′00′,填补报文的接收者要对报文从头到尾搜索位被置为1或′80′之值。如果找到了它,则知自此字节之后的所有字节为填补字节而不是报文的一部分,如图1所示。

  图1  根据ISO/lEC9797的填补数据

  与此有关,重要的是收件人要知道报文是总要填补还是仅在需要时才填补。如果仅当加密数据的长度不是字组长度的整数倍时才填补,接收者必须把这一点考虑在内。因此,通常有一个对要使用的填补的默认,这对于非必需填补数据的字组加密,传送和解密是不利的。

  为了完整起见,应当说明的是有时仅将值′00′用作填补。理由是此值通常用于计算MAC时的填补。如果仅用一种填补算法时,它节约了程序代码。当然,在这种情况下,必须知道数据的准确结构,以便能区别出有用数据和填补。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:用椭圆曲线作为非对称加密算法
下一篇:智能卡的报文鉴别码和加密代码和

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料