《SJL05金融数据加密机程序员手册WT363MA02-EW-V10309.doc》由会员分享,可在线阅读,更多相关《SJL05金融数据加密机程序员手册WT363MA02-EW-V10309.doc(42页珍藏版)》请在三一办公上搜索。
1、1.1 BMK到LMK的转加密说明:将用BMK加密的工作密钥WK,转为用LMK加密。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x02BMK长度标志1H1: 单倍长度2: 双倍长度3: 三倍长度BMKNHN=8/16/24 (LMK加密的密文)工作密钥WK长度1H8 / 16 / 24工作密钥WKNHN=8/16/24 (BMK加密的密文)输出域长度类型备注应答码1A“A”工作密钥WK长度1H8 / 16 / 24工作密钥WKNHN=8/16/24 (LMK加密的密文)校验码8HWK的校验码或应答码1A“E”错误码1H计算过程:1、 读取加密机LMK。2、 用LMK对输入BMK解
2、密,得到BMK明文。3、 用BMK明文对输入WK解密,得到WK明文。4、 用LMK对WK明文加密。1.2 LMK到BMK的转加密说明:将用LMK加密的工作密钥WK,转为用BMK加密。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x04BMK长度标志1H1: 单倍长度2: 双倍长度3: 三倍长度BMKNHN=8/16/24 (LMK加密的密文)工作密钥WK长度1H8 / 16 / 24工作密钥WKNHN=8/16/24 (LMK加密的密文)输出域长度类型备注应答码1A“A”工作密钥WK长度1H8 / 16 / 24工作密钥WKNHN=8/16/24 (BMK加密的密文)校验码8HWK
3、的校验码或应答码1A“E”错误码1H计算过程:1、 读取加密机LMK。2、 用LMK对输入的BMK解密,得到BMK明文。3、 用LMK对输入的WK解密,得到WK明文。4、 用BMK明文对WK明文加密。1.3 产生随机密钥说明:生成指定长度的随机密钥,并用LMK加密后返回其密文和CheckValue。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x06随机密钥长度1H8 / 16 / 24 输出域长度类型备注应答码1A“A”随机密钥长度1H8 / 16 / 24随机密钥NHLMK加密的密钥,N=8/16/24校验码8H随机密钥的校验码或应答码1A“E”错误码1H1.4 用LMK加密明
4、文密钥说明:用LMK加密输入的明文密钥,并返回CheckValue。消息格式输入域长度类型备注命令类型1H0xD0命令1H0x08密钥长度1H8 / 16 / 24密钥明文NHN = 8/16/24输出域长度类型备注应答码1A“A”密钥长度1H8 / 16 / 24密钥NHLMK加密的密钥N=8/16/24校验码8H密钥的校验码或应答码1A“E”错误码1H1.5 校验密钥说明:输入指定长度的密文密钥,并校验密钥的校验码。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x0A密钥长度1H8 / 16 / 24密钥NHN = 8/16/24 (LMK加密的密文)校验值长度1H4 - 8校
5、验值NH输出域长度类型备注应答码1A“A”或应答码1A“E”错误码1H1.6 用密钥分量合成密钥说明:用输入分量合成一个密钥,分量最多为9个。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x0C密钥长度1H8 / 16 / 24分量个数1H1到9分量1NHLMK加密的分量N=8/16/24分量2NHLMK加密的分量N=8/16/24分量nNHLMK加密的分量N=8/16/24输出域长度类型备注应答码1A“A”密钥长度1H密钥NHLMK加密的密钥N=8/16/24校验码8H密钥的校验码或应答码1A“E”错误码1H0x 01:无本地主密钥0x10:长度标志错0x68:输入长度错1.7
6、用输入密钥加密数据说明:用输入密钥对数据进行加密。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x12算法模式1H0:ECB 1:CBC算法类型1H1: Single_Des2: Double_Des3: Triple_Des密钥NHLMK加密,N = 8/16/24数据长度2H数据长度 (必须是8的整数倍)数据NHIV8HCBC模式时存在输出域长度类型备注应答码1A“A”数据长度2H数据长度 (8的整数倍)数据NH或应答码1A“E”错误码1H1.8 用输入密钥解密数据说明:用输入密钥对数据进行加密。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x14算法模式1H0:E
7、CB 1:CBC算法类型1H1: Single_Des2: Double_Des3: Triple_Des密钥NHLMK加密,N = 8/16/24数据长度2H数据长度 (必须是8的整数倍)数据NHIV8HCBC模式时存在输出域长度类型备注应答码1A“A”数据长度2H数据长度 (8的整数倍)数据NH或应答码1A“E”错误码1H1.9 数据转加密说明:将由Key1加密的数据,转为由Key2加密。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x16Key1的算法类型1H1: 单倍长度2: 双倍长度3: 三倍长度Key1NHN=8/16/24 (被LMK加密)Key2的算法类型1H1:
8、单倍长度2: 双倍长度3: 三倍长度Key2NHN=8/16/24 (被LMK加密)要转加密的数据8H被Key1加密的密文输出域长度类型备注应答码1A“A”转加密结果8H被Key2加密的密文或应答码1A“E”错误码1H计算过程:1、 读取加密机LMK。2、 用LMK解密Key1,用Key1明文对数据密文解密。3、 用LMK解密Key2,用Key2明文对数据明文加密。1.10 数据掩盖说明:采用内部算法对一段数据进行掩盖,输出密文。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x18数据长度2H1, 4096数据NH明文数据段输出域长度类型备注应答码1A“A”数据长度2H1, 409
9、6数据NH密文数据段或应答码1A“E”错误码1H1.11 数据还原说明:采用内部算法对一段经过掩盖的数据进行还原,输出明文。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x19数据长度2H1, 4096数据NH被掩盖密文数据输出域长度类型备注应答码1A“A”数据长度2H1, 4096数据NH还原的明文数据段或应答码1A“E”错误码1H1.12 产生随机数串说明:产生指定长度的随机数串。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x1A随机数长度2H1, 4096输出域长度类型备注应答码1A“A”随机数长度2H8 / 16 / 24随机数NH0-9的数串或应答码1A“E
10、”错误码1H1.13 加密PIN说明:用输入的PIK加密PIN。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x22PIK长度标识1H1: 单倍长度2: 双倍长度3: 三倍长度PIKNHN = 8/16/24,LMK加密的PIKPIN格式1H01/02/03/04/05/06PIN长度1H明文PIN长度PINNA明文PIN (必须是0-9的数字)主帐号/补位码12到19A(必须是0-9的数字)输出域长度类型备注应答码1A“A”PIN8H加密后的PIN或应答码1A“E”错误码1H1.14 解密PIN说明:用输入的PIK解密PIN。消息格式:输入域长度类型备注命令类型1H0xD0命令1
11、H0x24PIK长度1H1: 单倍长度2: 双倍长度3: 三倍长度PIKNHN = 8/16/24 LMK加密的PIKPIN格式1H01/02/03/04/05/06PIN8H密文PIN主帐号/补位码12 - 19A(必须是0-9的数字)输出域长度类型备注应答码1A“A”PIN长度1HPINNA明文PIN或应答码1A“E”错误码1H 1.15 计算MAC说明:用输入的MAK对输入数据计算MAC。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x32算法类型1H01:XOR02:ANSI9.903:ANSI9.19MAK长度1H8/16/24MAKNHN = 8/16/24 LMK加密
12、的MAK初始向量8H数据长度2H数据NH输出域长度类型备注应答码1A“A”MAC8H或应答码1A“E”错误码1H1.16 计算CVV说明:用输入密钥计算CVV。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x42CVK18HLMK加密的密文CVK28HLMK加密的密文卡主帐号12 / 19A0-9的数字串分隔符1A;有效期4A0-9的数字串服务代码3A0-9的数字串输出域长度类型备注应答码1A“A”CVV3A或应答码1A“E”错误码1H1.17 计算PVV说明:用输入密钥计算PVV。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x44密钥16HLMK加密的密文PVK索引
13、代号1H0 F明文PIN长度1A4 - 12主账号16-19A0-9的数字串分隔符1A; 明文PINNH输出域长度类型备注应答码1A“A”PVV4H或应答码1A“E”错误码1H1.18 IBM3624算法说明:用IBM3624算法生成Offset。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x47密钥8HLMK加密的密钥账号8H账号的最后16字节转为BCD码,账号必须是0-9的数字。十进制表16A0123456789012345密码长度1H4 - 12密码4 - 12A(必须是0-9的数字)输出域长度类型备注应答码1A“A”PINNHN=密码长度或应答码1A“E”错误码1H1.1
14、9 定义打印格式说明:定义打印格式。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x52打印格式定义符NA打印控制符字符串输出域长度类型备注应答码1A“A”或应答码1A“E”错误码1H 农行控制符字符串:LLLLLLL0250LLL02510602LLLL025T060PL060QL060RLLLLLL1.20 产生随机密钥并打印说明:定义打印格式。消息格式:输入域长度类型备注命令类型1H0xD0命令1H0x54密钥长度1A8 / 16 / 24附加信息1An打印位置对应与0分隔符A1;附加信息2An打印位置对应与1分隔符A1;.输出域长度类型备注应答码1A“A”随机密钥长度1H8
15、 / 16 / 24随机密钥NHLMK加密的密钥,N=8/16/24校验码8H随机密钥的校验码或应答码1A“E”错误码1H 1.21 产生并保存RSA密钥对说明:产生随机RSA密钥对,并保存在加密机索引上。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x01模长2H512, 2048,必须是8的整数倍。索引2H0, 19指数4H输出域长度类型备注应答码1A“A”公钥长度2H公钥长度公钥HDER格式的公钥或应答码1A“E”错误码1H1.22 公钥加解密说明:用输入的公钥,对输入数据加/解密。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x02加解密标志1H1:加密 0:解
16、密填充模式1H0:不填充1:PKCS#1填充算法2:OAEP填充算法公钥长度2H外部输入的公钥长度数据长度2H公钥HDER格式数据H输出域长度类型备注应答码1A“A”数据长度2H数据长度数据H数据或应答码1A“E”错误码1H计算过程:1、 将DER格式的公钥,转为PKCS格式。2、 用公钥加解密。1.23 签名说明:用输入的私钥,对输入数据签名。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x03摘要算法1H0MD5算法1SHA-1算法;2SHA-2243SHA-2564SHA-3845SHA-512填充模式1H0:不填充1:PKCS#1填充算法2:OAEP填充算法RSA密钥索引2
17、H0, 190xFFFF:私钥从外部传入RSA私钥长度2H索引在0, 19范围时,填0索引为0xFFFF时,为外部输入的私钥长度摘要数据长度2HRSA私钥HDER格式;结尾补0x80,再补0x00直到数据长度为8的整数倍;被LMK加密。(索引在0, 19范围时不存在)摘要数据H输出域长度类型备注应答码1A“A”签名长度2H签名长度签名H签名或应答码1A“E”错误码1H计算过程:索引在0, 19范围时,用加密机内部RSA私钥:1、 读取指定索引的RSA私钥。2、 对输入数据摘要。3、 用RSA私钥对摘要加密。索引为0xFFFF时,RSA私钥从外部传入:1、 读取加密机LMK。2、 用LMK对传入
18、RSA私钥解密。3、 除去私钥结尾的0x80.、0x00填充字符。4、 将DER格式的私钥,转为PKCS格式。5、 对输入数据摘要。6、 用RSA私钥对摘要加密。1.24 签名验证说明:签名验证。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x04摘要算法1H0MD5算法1SHA-1算法;2SHA-2243SHA-2564SHA-3845SHA-512填充模式1H0:不填充1:PKCS#1填充算法2:OAEP填充算法RSA公钥长度2H外部输入的公钥长度签名对应的数据长度2H签名长度2HRSA公钥HDER格式;签名对应的数据H签名H输出域长度类型备注应答码1A“A”签名长度2H签名长
19、度签名H签名或应答码1A“E”错误码1H计算过程:1、 将DER格式的RSA公钥,转为PKCS格式。2、 对数据进行摘要。3、 用RSA公钥对签名解密。4、 将摘要结果与解密结果比较。1.25 导出指定索引上的私钥说明:导出指定索引上的私钥。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x06索引2H0, 19输出域长度类型备注应答码1A“A”私钥长度2H私钥长度私钥HLMK加密的私钥或应答码1A“E”错误码1H计算过程:1、 读取LMK。2、 读取指定索引上的私钥。3、 将私钥转为DER格式。4、 在私钥结尾补0x80,再补0x00直到长度为8的整数倍。5、 用LMK对私钥加密。
20、1.26 公钥转加密说明:将用LMK加密的数据,转为RSA公钥加密。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x0A填充模式1H0:不填充1:PKCS#1填充算法2:OAEP填充算法数据长度2H1, 256,必须是8的整数倍。公钥长度2H外部输入的公钥长度公钥HDER格式被LMK加密的密文数据H输出域长度类型备注应答码1A“A”数据长度2H被RSA公钥加密的数据长度数据H被RSA公钥加密的数据或应答码1A“E”错误码1H计算过程:1、 将DER格式的RSA公钥,转为PKCS格式。2、 读取加密机LMK。3、 用LMK对输入数据解密。4、 用公钥对数据加密。1.27 私钥加解密说
21、明:用输入的私钥,对输入数据加/解密。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x0C加解密标志1H1:加密 0:解密填充模式1H0:不填充1:PKCS#1填充算法2:OAEP填充算法私钥长度2H外部输入的私钥长度数据长度2H私钥HDER格式;结尾补0x80,再补0x00直到数据长度为8的整数倍;被LMK加密。数据H输出域长度类型备注应答码1A“A”数据长度2H数据长度数据H数据或应答码1A“E”错误码1H计算过程:1、 读取加密机LMK。2、 用LMK对输入的私钥解密。3、 除去私钥结尾的0x80.、0x00填充字符。4、 将DER格式的私钥,转为PKCS格式。5、 用私钥加
22、解密。1.28 摘要说明:摘要。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x0D摘要算法1H0MD5算法1SHA-1算法;2SHA-2243SHA-2564SHA-3845SHA-512摘要数据长度2H摘要数据长度摘要数据H摘要数据输出域长度类型备注应答码1A“A”摘要长度2H摘要长度摘要H摘要或应答码1A“E”错误码1H1.29 子密钥离散说明:将应用主密钥离散为卡片子密钥或者会话子密钥。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x10离散次数1H1/ 2IC卡类型1H1/2应用主密钥16H被LMK加密的密文卡片密钥分散因子8H会话密钥分散因子2H“离散次数=
23、2”时存在保护密钥长度标志1H8/16/24保护密钥H长度和“保护密钥长度标志”对应,被LMK加密,用来保护导出分散密钥。输出域长度类型备注应答码1A“A”分散密钥16H被保护密钥加密分散密钥校验值8H或应答码1A“E”错误码1H1.30 验证ARQC说明:验证ARQC。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x11IC卡类型1H1/2应用密文主密钥16H被LMK加密的密文卡片密钥分散因子8H会话密钥分散因子2H待验证的ARQC值8H用于计算ARQC的数据长度2H1, 4096用于计算ARQC的数据H加密机内部填充方式:先补0x80,再补0x00直到长度为8的整数倍。输出域长
24、度类型备注应答码1A“A”或应答码1A“E”错误码1H1.31 生成ARPC说明:生成ARPC。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x12IC卡类型1H1/2应用密文主密钥16H被LMK加密的密文卡片密钥分散因子8H会话密钥分散因子2HARQC8HARC 2H输出域长度类型备注应答码1A“A”ARPC8H或应答码1A“E”错误码1H1.32 对发卡行脚本数据加解密说明:对发卡行脚本数据加解密。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x13操作类型1H1:加密 0:解密IC卡类型1H1/2算法应用模式1H0:ECB 1:CBC安全报文加密主密钥16H被LM
25、K加密的密文卡片密钥分散因子8H会话密钥分散因子2H数据长度2H1, 4096初始向量IV8HCBC模式时存在数据H输出域长度类型备注应答码1A“A”数据长度2H数据长度数据加密的结果肯定是8的整数倍。解密的结果是除去所有填充字符后的真实有效的数据。或应答码1A“E”错误码1H加密时:加密机内部的填充方式:如果是8的整数倍,不填充;如果不是8的整数倍,先补0x80,再补0x00直到长度为8的整数倍。解密时:长度必须是8的整数倍。解密完后,如果结尾有填充字符,需要去除填充字符。去掉其他填充字符。1.33 计算发卡行脚本MAC说明:计算发卡行脚本MAC。消息格式:输入域长度类型备注命令类型1H0x
26、D2命令1H0x14IC卡类型1H1/2安全报文认证主密钥16H被LMK加密的密文卡片密钥分散因子8H会话密钥分散因子2H数据长度2H1, 4096数据H加密机内部填充方式:先补0x80,再补0x00直到长度为8的整数倍输出域长度类型备注应答码1A“A”MAC8H数据长度或应答码1A“E”错误码1H1.34 将私钥解析为各个分量说明:将私钥解析为各个分量。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x15KEY加密算法类型1H1: Single_Des2: Double_Des3: Triple_Des私钥长度2H要解析的私钥的长度KEYH加密私钥分量的KEY,长度与“KEY加密
27、算法类型”对应。私钥H私钥格式为DER,结尾先补0x80,再补0x00直到长度为8的整数倍,被LMK加密的密文。输出域长度类型备注应答码1A“A”私钥指数的长度2H私钥指数H被KEY加密的密文第一个大素数(Prime)的长度2H第一个大素数(Prime)H被KEY加密的密文第二个大素数(Prime)的长度2H第二个大素数(Prime)H被KEY加密的密文D mod (P-1) 的长度2HD mod (P-1)H被KEY加密的密文D mod (Q-1) 的长度2HD mod (Q-1)H被KEY加密的密文Q-1mod P 的长度2HQ-1mod PH被KEY加密的密文或应答码1A“E”错误码1H
28、计算过程:1、 获取LMK。2、 用LMK对传入的KEY和私钥解密。3、 除去私钥结尾的0x80.、0x00填充字符。4、 将DER格式的私钥转为PKCS格式。5、 在私钥的各个分量结尾补0x80,再补0x00直到长度为8的整数倍。6、 用KEY明文对各个分量加密。1.35 大数指数模用算说明:大数指数模用算。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x16指数模运算中的底数长度2H指数模运算中的指数长度2H指数模运算中的模长度2H指数模运算中的底数NH指数模运算中的指数NH指数模运算中的模NH输出域长度类型备注应答码1A“A”指数模运算的结果长度2H指数模运算的结果NH或应答
29、码1A“E”错误码1H1.36 产生随机大素数说明:产生随机大素数。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x17产生随机大素数的bit长度2H0, 2048 (必须是64的整数倍)输出域长度类型备注应答码1A“A”随机大素数NHN = bit长度 / 8或应答码1A“E”错误码1H1.37 保护导入密钥说明:将用KEK加密的Key存到加密机指定索引上。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x22传输密钥的索引2H0, 486保护密钥的类型1H0/1/2/3/导入密钥的索引2H0, 486导入密钥的类型1H0/1/2/3/导入密钥的长度1H8/16/24导入密钥(传输密钥加密)NHN=8/16/24校验值长度1H4/8校验值NHN=4/8输出域长度类型备注应答码1A“A”或应答码1A“E”错误码1H1.38 产生并保存随机密钥说明:产生指定长度的随机密钥。消息格式:输入域长度类型备注命令类型1H0xD2命令1H0x23密钥索引2H0xFFFF:不保存密钥0, 486:保存密钥密钥类型1