银联I型和II型协议差别

模拟后台银联II型和I型区别

在模拟后台中,银联I型和II型在交易报文基本一致,唯有加解密和MAC运算这步不同,故模拟后台若修改银联II型交易为银联I型交易则只需要修改加解密方式和在结构体中增加传入加解密基础数据即可。

 

原有II型在传入的数据中没有随机数(4位)和随机数序号(4位)两项,但在I中必须有此两项作为基础数据计算过程密钥(工作密钥),对数据进行加解密和MAC运算,所以结构体中增加此两项传入,此后将随机数和序号合并成8字节的计算因子(前四字节为序号、后四字节为随机数),用主密钥对计算因子做3DES运算获得过程密钥,再用过程密钥(工作密钥)进行加解密和MAC运算。

 

银联I型和II型加密区别

工作密钥生成(I、II型不相同):

I型

不同TSAM卡片应设置不同的终端主密钥,实现“一机一密”。使用主密钥对分散因子产生过程密钥(即工作密钥)。

每次交易使用不同的过程密钥对交易信息进行加密。

PIN加密和对磁道信息、MAC的加密算法采用3DES算法。

过程密钥的产生算法:

1、TSAM卡中存有主密钥;

2、TSAM卡产生一个4字节的随机数;

3、TSAM卡提取4字节的序号(以16进制表示),该序号在TSAM上每操作一次自动加1;

4、TSAM卡将随机数和序号合并成8字节的计算因子(前四字节为序号、后四字节为随机数);

5、用主密钥对计算因子做3DES运算获得过程密钥(即工作密钥);

II型

包括用于对个人标识码(PIN)加密的PIK、进行报文鉴别(MAC)的MAK以及对磁道信息加密的TDK。

由电话支付中心的加密机产生,在电话支付终端每次签到时从电话支付中心利用KEK加密后下载,并由KEK加密存储。

 


PIN加密I、II型相同

1.     PIN加、解密的主账号PAN取法

1)       手输卡号

如为手输卡号,从所输卡号(2域)右边数第二位开始,向左取12位,作为参与PIN加、解密的PAN。

2)       刷卡方式

如为刷卡方式,从二磁道分隔符‘=’左边第二位开始,向左取12个字符,作为参与PIN加密的PAN;如只有三磁道,则从磁道3分隔符‘=’左边第二位开始,向左取12个字符,作为参与PIN加、解密的PAN。

 

2.     数据格式化方法如下(ANSI X9.8)

1)在密码明文字符串前加2字节长度;

2)在其后补字符‘F’,补足16字节,将补位后的字符串转换为8字节的BCD码表示的字符串,作为密码PIN;

3)从二磁道分隔符‘=’左边第二位开始,向左取12个字符,并在左边补字符‘0’,补足16字节,将补位后的字符串转换为8字节的BCD码表示的字符串,作为主账号PAN;

4)将密码PIN与主账号PAN按位异或。

注:若无磁道数据,则主账号取缺省值(16字节‘0’)。

举例:

密码明文数据:123456

补位后数据:06123456FFFFFFFF

转换后数据:\x06123456FFFFFFFF

磁卡上的主账号(分隔符左边数据):123456789012345678

截取下的PAN:678901234567

补位后的数据:0000678901234567

转换后的数据:\x0000678901234567

异或后的数据:\x061253DFFEDCBA98

3.     PIN的长度

PIN的长度为6位(可扩展到12位)。

4.     PIN的字符集

PIN用数字字符表示,下表给出了它的二进制对照表:

表C.1 PIN字符二进制表示

PIN字符

二进制表示

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

5.     PIN格式

PIN的格式应符合ANSI X9.8 Format(带主账号信息)

PIN BLOCK格式等于PIN按位异或主账号(PAN):

PIN格式:

表C.2 PIN格式

位置

长度

说明

1

1 BYTE

PIN长度

2

7 BYTE

6-12位PIN(每个字符占4个BIT,不足右补F)

 

PAN格式:

表C.3 PAN格式

位置

长度

说明

1

2 BYTE

%H0000

3

6 BYTE

取主账号的右12位

 

例如:明文PIN为: 123456,

假设: 磁卡上的PAN:1234 5678 90123456 78

      截取下的PAN:6789 0123 4567

则用于PIN加密的PAN为:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67

        PIN BLOCK为:0x06 0x12 0x340x56 0xFF 0xFF 0xFF 0xFF

                           异或:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67

                      结果为:0x06 0x12 0x530xDF 0xFE 0xDC 0xBA 0x98

6.     加密算法

采用单倍长TDK或双倍长的PIK对PIN block进行DES或TDES加密。


磁道信息加密算法I、II型相同

1.     简述

1.        二磁道数据作定长48字节处理,不足右补字符“F”;

2.        若三磁道数据为16字节的倍数,则后补16个字符‘F’;否则,将三磁道数据(若存在)后补字符‘F’,补足16字节的倍数;

3.        将二磁道数据与三磁道数据合并(二磁道数据在前,三磁道数据在后);

4.        将合并后的字符串转换为BCD码表示的TDB(Trackdate block)字符串。

 

5.        采用单倍长TDK密钥或双倍长密钥TDK对TDB,按每8个字节进行DES或TDES加密。

2.     实例

1.        将合并后的字符串转换为BCD码表示的TDB(Track date block)字符串

二磁道数据(37):

1234567890123456789=05082017819991683

三磁道数据(102):

1234567890123456789=156000000000000000000378199921600000508000000000000000000000=000000000003=00000000

 

补位后二磁道数据:

1234567890123456789=05082017819991683FFFFFFFFFFF

补位后三磁道数据:

1234567890123456789=156000000000000000000378199921600000508000000000000000000000=000000000003=00000000FFFFFFFFFF

合并转换后数据:

\x1234567890123456789D05082017819991683FFFFFFFFFFF1234567890123456789D156000000000000000000378199921600000508000000000000000000000D000000000003D00000000FFFFFFFFFF

2.        加密

二磁道数据(37):

TDB = T1 T2 T3

其中:   

T1 = TD11 TD12 TD13 TD14 TD15 TD16 TD17 TD18

T2 = TD21 TD22 TD23 TD24 TD25 TD26 TD27 TD28

T3 = TD31 TD32 TD33 TD34 TD35 TD36 TD37 TD38

 

 

ENC BLOCK1 = eTDK(TD11 TD12 TD13 TD14TD15 TD16 TD17 TD18)

                     =EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18

ENC BLOCK2 = eTDK(TD21 TD22 TD23 TD24TD25 TD26 TD27 TD28)

                     =EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28

ENC BLOCK3 = eTDK(TD31 TD32 TD33 TD34TD35 TD36 TD37 TD38)

                     =EN31 EN32 EN33 EN34 EN35 EN36 EN37 EN38

加密后的磁道信息:

EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18

EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28

EN31 EN32 EN33 EN34 EN35 EN36 EN37 EN38

 

MAC的算法I、II型相同

1.     采用ECB的加密方式,简述如下

1.        将欲发送到电话支付中心的数据,从报文类型到有效数据域之间的部分构成MAC ELEMEMENT BLOCK (MAB)。

2.        对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”。

3.        将异或运算后的最后8个字节(RESULTBLOCK)转换成16 个HEXDECIMAL:

4.        取前8 个字节用MAK加密:

5.        将加密后的结果与后8 个字节异或:

6.        用异或的结果TEMP BLOCK 再进行一次单倍长密钥算法运算;

7.        将运算后的结果(ENC BLOCK2)转换成16 个HEXDECIMAL:

8.        取前8个字节作为MAC值。

2.     实例

1.        对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”

MAB = M1 M2 M3M4

其中:   

M1 = MS11 MS12MS13 MS14 MS15 MS16 MS17 MS18

M2 = MS21 MS22MS23 MS24 MS25 MS26 MS27 MS28

M3 = MS31 MS32MS33 MS34 MS35 MS36 MS37 MS38

M4 = MS41 MS42MS43 MS44 MS45 MS46 MS47 MS48

 

按如下规则进行异或运算:

                    MS11MS12 MS13 MS14 MS15 MS16 MS17 MS18

XOR)                 MS21 MS22 MS23MS24 MS25 MS26 MS27 MS28

---------------------------------------------------

TEMP BLOCK1 =  TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18

 

然后,进行下一步的运算:

TM11 TM12 TM13TM14 TM15 TM16 TM17 TM18

XOR)                 MS31 MS32 MS33MS34 MS35 MS36 MS37 MS38

---------------------------------------------------

TEMP BLOCK2 =  TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28

 

再进行下一步的运算:

TM21 TM22 TM23TM24 TM25 TM26 TM27 TM28

XOR)                 MS41 MS42 MS43MS44 MS45 MS46 MS47 MS48

---------------------------------------------------

RESULT BLOCK =       TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38

             

2.        将异或运算后的最后8个字节(RESULT BLOCK)转换成16 个HEXDECIMAL

RESULT BLOCK =TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38

               = TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342 ||

                     TM351 TM352 TM361 TM362 TM371 TM372TM381 TM382

 

3.        取前8 个字节用MAK加密

ENC BLOCK1 =eMAK(TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342)

                     = EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18

 

4.        将加密后的结果与后8 个字节异或

EN11 EN12  EN13  EN14 EN15  EN16  EN17 EN18

XOR)       TM351TM352 TM361 TM362 TM371 TM372 TM381 TM382

------------------------------------------------------------

TEMP BLOCK=     TE11  TE12 TE13  TE14  TE15 TE16  TE17  TE18

 

5.        用异或的结果TEMP BLOCK 再进行一次单倍长密钥算法运算

ENC BLOCK2 = eMAK(TE11 TE12 TE13 TE14TE15 TE16 TE17 TE18)

                = EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28

 

6.        将运算后的结果(ENC BLOCK2)转换成16 个HEXDECIMAL

ENC BLOCK2 = EN21 EN22 EN23 EN24 EN25 EN26 EN27EN28

= EM211 EM212 EM221EM222 EM231 EM232 EM241 EM242 ||

                     EM251 EM252 EM261 EM262 EM271 EM272 EM281EM282

ENC RESULT= %H84,%H56, %HB1, %HCD, %H5A, %H3F, %H84, %H84

7.        转换成16 个HEXDECIMAL

“8456B1CD5A3F8484”

8.        取前8个字节作为MAC值

取”8456B1CD”为MAC值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值