PBOC 如何算分散密钥、过程密钥,如何计算ARQC、ARPC、MAC,已经ENC加解密的算法
初始数据:
50020232A0000003330101016214157312900025165F00000200000000000007000103A02000010A0100000019D03845AFB0D77300000001000000000000000001560000000000015611122699490932987C00000203A02000300921000000000000000000100000000000100000000000000000
卡号:6214157312900025165
卡序列号:00
ATC:0002
74位数据源:
写卡充值脚本:
72199F180400000001861004DA9F790A000000010000F5AB5B1300
主密钥:
WK 索引00
MDK: A46B717318EED28A2B5DB38FCC28FE6E
MDK-ENC: 6AAF8070BE0185BD78B114CB64CF476A
MDK-MAC: CFE31C8FEC62792BCB1A5D41A2442166
KMU: 027B7367D6A36C6C51F2A07D091E4D91
1、 计算ARPC值
X:=(ARC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’)。
2) 计算Y:=ARQC⊕X。
3) 计算ARPC
基于128位分组加密算法获得16字节ARPC
ARPC:=ALG(SKAC)[Y||‘00’||‘00’||‘00’||‘00’||‘00’||‘00||‘00’||‘00]
1.1用MDK、Pan、序列号生成卡片分散密钥
这一方式以主账号(PAN)和主账号序列号(如果主账号序列号不存在,则用一个字节“00”代替)的最右16个数字作为输入数据,以及16字节的发卡行主密钥IMK作为输入,生成16字节的IC卡子密钥MK作为输出:
1) 如果主账号和主账号序列号X的长度小于16个数字,X右对齐,在最左端填充十六进制的“0”
以获得8字节的Y。如果X的长度至少有16个数字,那么Y由X的最右边的16个数字组成。
2) 计算2个8字节的数字
得:5731290002516500
金融IC卡是基于128位分组加密算法的计算方法
Z:=ALG(MDK)[Y||(Y⊕(‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’))]
[Y||(Y⊕(‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’||‘FF’))]= 5731290002516500A8CED6FFFDAE9AFF;