高速公路ETC卡签之我见9-常见算法

本部分主要介绍下高速公路ETC卡签所涉及的主要算法,包括子**推导、MAC计算以及过程**,具体如后描述。

1.  子**推导(**分散)

子**推导包括左半部分推导、右半部分推导以及合并三个环节。

  1. 左半部分的推导方法

推导双倍长 DPK左半部分的方法:

  • 将应用***(分散系数)的最右16个数字作为输入数据

  • MPK 作为加***

  • MPK 对输入数据进行Triple DES运算

高速公路ETC卡签之我见9-常见算法

 

  1. 右半部分的推导方法

推导双倍长DPK右半部分的方法:

  • 将应用***(分散系数)的最右16个数字的求反作为输入数据

  • MPK 作为加***

  • MPK 对输入数据进行TripleDES运算

高速公路ETC卡签之我见9-常见算法

  1. 合并

DPK = DPK_L || DPK_R

最终得到的DPK即为MPK的子**(分散结果)。

2.  MAC计算

MAC,即报文鉴别码,按照如下的方式使用单重或三重DES加密方式产生MAC

  • 第一步:取8个字节的16进制数字‘0或者 4字节随机数+4字节’0’(由业务类型确定)作为初始变量。

  • 第二步:按照顺序将以下数据串联在一起形成数据块:

  • 第三步:将该数据块分成8字节为单位的数据块,标号为D1D2D3D4等。最后的数据块有可能是1-8个字节。

  • 第四步:如果最后的数据块长度是8字节的话,则在其后加上16进制数字’80 00 00 00 00 00 00 00 ’,转到第五步。如果最后的数据块长度不足8字节,则在其后加上16进制数字’80’,如果达到8字节长度,则转入第五步;否则在其后加入16进制数字’0’直到长度达到8字节。

  • 第五步:对这些数据块使用相应的**进行加密。根据**的长度采用Single DESTriple DES

  • 第六步:最终得到是从计算结果左侧取得的4字节长度的MAC(或TAC)。

高速公路ETC卡签之我见9-常见算法

用长度为16字节的**产生MAC

 

高速公路ETC卡签之我见9-常见算法

用长度为8字节的**产生MAC

 

3.  过程**产生

过程**是在交易过程中用可变数据产生的单倍长**。过程**产生后只能在某过程/交易中使用一次。

下图描述了 EP进行消费交易时产生过程**的机制。这方法也用于不同交易类型的过程**的产生,但输入的数据取决于不同的交易类型。

高速公路ETC卡签之我见9-常见算法