您好,欢迎访问三七文档
银永立104406311@qq.com初始数据:50020232A0000003330101016214157312900025165F00000200000000000007000103A02000010A0100000019D03845AFB0D77300000001000000000000000001560000000000015611122699490932987C00000203A02000300921000000000000000000100000000000100000000000000000卡号:6214157312900025165卡序列号:00ATC:000274位数据源:写卡充值脚本:72199F180400000001861004DA9F790A000000010000F5AB5B1300主密钥:WK索引00MDK:A46B717318EED28A2B5DB38FCC28FE6EMDK-ENC:6AAF8070BE0185BD78B114CB64CF476AMDK-MAC:CFE31C8FEC62792BCB1A5D41A2442166KMU:027B7367D6A36C6C51F2A07D091E4D911、计算ARPC值X:=(ARC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’)。2)计算Y:=ARQC⊕X。3)计算ARPC基于128位分组加密算法获得16字节ARPCARPC:=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;银永立104406311@qq.com得到卡片分散密钥:9D70763D423A2A0023265A2AAF5030841.2计算卡片过程密钥第一步:卡片/发卡行决定是使用MAC密钥还是数据加密密钥来进行所选择的算法处理。第二步:将当前的ATC在其左边用十六进制数字’0’填充到8个字节记为数据源A,将当前的ATC异或十六进制值FFFF后在其左边用十六进制数字“0”填充到8个字节记为数据源B,将数据源A和数据源B串联,用选定的密钥对该数据作如图10所示的运算产生过程密钥。Z:=ALG(Key)[[‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||ATC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||(ATC‘FFFF’)]⊕‘FFFF’)][[‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||ATC||‘00’||‘00’||‘00’||‘00’||‘00’||‘00’||(ATC‘FFFF’)]⊕‘FFFF’)]=0000000000000002000000000000FFFD;卡片过程密钥:BA72C2B2F314489013DD121A61715D52银永立104406311@qq.com1、3计算X:4位授权响应码+12为0填充的,30300000000000001.4计算Y:ARQC异或授权响应吗填充X:得到Y:=29E03845AFB0D7731.5计算ARPC先把Y:用右0填充到16个自己做为加密数据;过程密钥做位密钥加密得到16个字节AQPC;16字节ARPC=3F69C08F3997240DFE1D9E36863E5DA4,取前8个字节做为发送给IC卡ARPC:3F69C08F3997240D2.计算MAC命令中需要加密的数据加密以后再计算MAC。MAC使用对称密钥算法计算的,步骤如下:步骤1:初始值为8字节全零(此步骤可省略);银永立104406311@qq.com步骤2:下列数据按顺序排列得到一个数据块D:——CLA、INS、P1、P2和Lc(Lc的长度包括MAC的长度);——ATC(对于发卡行脚本处理,此ATC在请求中报文中上送);——应用密文(对于发卡行脚本处理,此应用密文通常是ARQC,或AAC,在请求报文中上送);——命令数据域中的明文或密文数据(如果存在)。步骤3:将上述数据块D分成8字节长的数据块D1、D2、D3…最后一块数据块的字节长度为1到8;步骤4:如果最后一块数据块的长度为8字节,后面补8字节数据块:8000000000000000,执行步骤5;如果最后一块数据块的长度小于8字节,后面补一个字节80,如果长度到8字节,执行步骤5。如果仍然不够8字节,补00直到8字节;步骤5:用MAC过程密钥对数据块进行加密。MAC过程密钥的生成见C.4;图C.1是使用MAC过程密钥A和B生成MAC的流程图。步骤6:MAC的计算结果为8字节,从最左边的字节开始取4字节。2.1计算安全报文鉴别(MAC)过程密钥和1.2流程一样,只是使用的MDK-MAC密钥分散卡片MAC子密钥;得到MAC过程密钥822492068CD484E4E4A5B17CF57ACD43F5AB5B13922A9512取左边四个4字节MAC即为:F5AB5B133.计算ARQC银永立104406311@qq.com4.加密密码数据
本文标题:PBOC密码技术方法、分散密钥、过程密钥-如何计算ARQC、ARPC、MAC-已经ENC
链接地址:https://www.777doc.com/doc-6132586 .html