智能卡中填补数据
发布时间:2008/11/22 0:00:00 访问次数:461
在智能卡中,des算法主要用于两种面向字组的ecb和cbc模式。然而,因为和卡通信的数据并不总是严格满足某个数量的字组,有些时候必须填补一个字组。把一个数据字组扩充到其长度是给定字组大小的整倍数被称为填补(padding)。
解密后的填补的数据组在接收数据时有一个问题,因为接收者不知道实际的数据是在那里结束而开始填补字节的。一个解决的办法是在报文的开头说明报文的长度,但这将改变数据的结构,一般而言是不希望的。对于那些通常不加密的数据来说,这将是特别繁重的负担,因为这时不需要填补,因而也没有长度信息。在许多情况下,报文的结构可以不必改变。
这就是说必须用不同的方法来识别填补的字节。作为一项规则,普遍采用如下算法,它规定在iso/iec 9797标准中。接着用数据的第1个填补字节的最高位(msb)被置为1。于是,此字节的十六进制值为′80′,如果还需要另外的填补字节时其值为′00′,填补报文的接收者要对报文从头到尾搜索最高位被置为1或′80′之值。如果找到了它,则知自此字节之后的所有字节为填补字节而不是报文的一部分,如图1所示。
图1 根据iso/lec9797的填补数据
与此有关,重要的是收件人要知道报文是总要填补还是仅在需要时才填补。如果仅当加密数据的长度不是字组长度的整数倍时才填补,接收者必须把这一点考虑在内。因此,通常有一个对要使用的填补的默认,这对于非必需填补数据的字组加密,传送和解密是不利的。
为了完整起见,应当说明的是有时仅将值′00′用作填补。理由是此值通常用于计算mac时的填补。如果仅用一种填补算法时,它节约了程序代码。当然,在这种情况下,必须知道数据的准确结构,以便能区别出有用数据和填补。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
在智能卡中,des算法主要用于两种面向字组的ecb和cbc模式。然而,因为和卡通信的数据并不总是严格满足某个数量的字组,有些时候必须填补一个字组。把一个数据字组扩充到其长度是给定字组大小的整倍数被称为填补(padding)。
解密后的填补的数据组在接收数据时有一个问题,因为接收者不知道实际的数据是在那里结束而开始填补字节的。一个解决的办法是在报文的开头说明报文的长度,但这将改变数据的结构,一般而言是不希望的。对于那些通常不加密的数据来说,这将是特别繁重的负担,因为这时不需要填补,因而也没有长度信息。在许多情况下,报文的结构可以不必改变。
这就是说必须用不同的方法来识别填补的字节。作为一项规则,普遍采用如下算法,它规定在iso/iec 9797标准中。接着用数据的第1个填补字节的最高位(msb)被置为1。于是,此字节的十六进制值为′80′,如果还需要另外的填补字节时其值为′00′,填补报文的接收者要对报文从头到尾搜索最高位被置为1或′80′之值。如果找到了它,则知自此字节之后的所有字节为填补字节而不是报文的一部分,如图1所示。
图1 根据iso/lec9797的填补数据
与此有关,重要的是收件人要知道报文是总要填补还是仅在需要时才填补。如果仅当加密数据的长度不是字组长度的整数倍时才填补,接收者必须把这一点考虑在内。因此,通常有一个对要使用的填补的默认,这对于非必需填补数据的字组加密,传送和解密是不利的。
为了完整起见,应当说明的是有时仅将值′00′用作填补。理由是此值通常用于计算mac时的填补。如果仅用一种填补算法时,它节约了程序代码。当然,在这种情况下,必须知道数据的准确结构,以便能区别出有用数据和填补。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:智能卡的报文鉴别码和加密代码和
上一篇:用椭圆曲线作为非对称加密算法