金融行业里下面这个题目:觉得挺有代表性
1)以下是签到响应的报文:
00 69 60 00 00 00 03 00 00 00 22 00 00 08 10 00 38 00 01 0A
C0 00 14 00 00 04 18 58 35 03 13 08 00 01 00 00 31 36 32 3134 36 30 30 30 31 30 33 30 30 31 32 33 34 31 32 33 34 31 32
33 34 35 31 32 33 34 35 31 32 33 34 35 00 11 00 00 00 01 00
10 00 24 F9 27 14 E8 0E 83 2E DC AD C6 7D 84 4B F6 E9 1B 1E
3A 9D 81 AD C6 7D 84
A) 请按你的理解将报文的相关信息分析出来。
答:以下分析按报文字节流顺序来。
00 69 :除报文最前面两字节“00 69”外,整个消息报文的长度。这里0x000x69=105个字节,是pos机签到报文的长度,包括TPDU和报文头的长度。
60 00 00 00 03 :TPDU.
00 00 00 22 00 00 :报文头,按顺序,00--应用类别(但银联文档中只定义了60~63),00--软件总版本号,0--终端状态,0--pos中心处理要求,22 00 00 --软件分版本号。
08 10 :消息类型。
00 38 00 01 0A C0 00 14 :位图bitmap。
00 00 04 :11域, POS终端交易流水。
18 58 35 :12域,POS端交易时间.
03 13 :13域,POS端交易日期。
08 00 01 00 00 :32域,受理方标识码。
31 36 32 31 34 36 30 30 30 31 30 33 :37域,检索参考号。
30 30 :39域,应答码”00”,用的16进制字符0x300x30表示。
31 32 33 34 31 32 33 34 :41域,POS机终端标识码。
31 32 33 34 35 31 32 33 34 35 31 32 33 34 35 :42域,受卡方标识码。
00 11 00 00 00 01 00 10 :60域,自定义域,00 11--右靠压缩BCD码,表示这个域的数据长度11个字节,用左靠压缩BCD码6个字节数据,00--60.1消息类型码,00 00 01--60.2批次号,001--60.3网络信息管理码(001表示终端用单倍长密钥算法),最后个一个0作为填充(无实际意义)。
00 24 F9 27 14 E8 0E 83 2E DC AD C6 7D 84 4B F6 E9 1B 1E 3A 9D 81 AD C6 7D 84 :62域,自定义域,这里是终端密钥。
B) 将你分析出来的工作密钥数据,用TMK解出明文的TPK和TAK,并描述其验证过程及结果。
假定TMK(Hex格式): 32 33 34 35 36 37 38 39
C) 用解出来的TAK,对上面的整个签到响应报文数据进行算MAC,并描述你的算法过程及结果。
D) 用解出来的TPK,分别对"111111"(6个1)和"111111111111"(12个1)的PIN进行加密码,并描述你的算法过程及结果。
2) 请根据给出的TMK(数据格式为Hex),以下面给出的明文进行加密,并生成62域所需密钥数据,并描述过程与步骤。
TMK: 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46
TPK: 38 37 36 35 34 33 32 31 31 32 33 34 35 36 37 38
TAK: 39 38 37 36 35 34 33 32