2024年4月26日发(作者:)

加密(或解密)。

转换PIN从PIK加密到TMK加密

<0

X

6E>

说明:用PIK解密PIN Block,用TMK加密后输出

消息格式:

输入域

命令

银行密钥索引号

终端密钥索引号

PIK密文

PIN密文

主帐号1

主帐号2

输出域

应答码

PIN

应答码

错误码

长度

1

2

2

8

8

8

8

长度

1

8

1

1

类型

H

H

H

H

H

H

H

类型

A

H

A

H

备注

0x6E

BMK加密的PIK

PIK加密的PIN Block

备注

“A”

用TMK加密后的PIN Block

“E”

0x 0C:非法银行主密钥索引号

0x 0D:非法终端主密钥索引号

0x05:没有终端主密钥

0x1C:无银行主密钥

SJL05处理过程:

1) 读出银行主密钥和终端主密钥

2) 用银行主密钥解密得到PIK明文,用PIK明文解密得到PIN明文

3) PIN与主帐号1和主帐号2异或

4) 用终端主密钥加密上一步的结果并输出

卫士通信息产业股份有限公司 /

- 85 -

生成用ZMK和RSA加密的随机密钥

<0

X

70>

说明:生成随机密钥,分别用ZMK和RSA公钥加密(无补位)后返回。

消息格式:

输入域

命令

银行索引号

模长

RSA公钥

输出域

应答码

KEY1

KEY2LEN

长度

1

2

2

N

长度

1

16

2

类型

H

H

H

H

类型

A

H

H

备注

0x70

区域主密钥索引号

RSA模长

位数等于模长

备注

“A”

用ZMK加密后的随机密钥

用RSA公钥加密后的随机密钥

长度

KEY2

应答码

错误码

N

1

1

H

A

H

用RSA公钥加密后的随机密钥

“E”

0x 0C:非法银行主密钥索引号

0x 02:无银行主密钥

SJL05处理过程:

1) 生成128位随机密钥DK;

2) 取出指定的区域主密钥ZMK,用ZMK对DK做3DES加密,

得到密文密钥C_DK1;

3) 用RSA公钥对DK做加密,得到密文密钥C_DK2;

4) 如果成功,返回C_DK1、C_DK2的长度及C_DK2。

卫士通信息产业股份有限公司 /

- 86 -

用输入密钥对数据加/解密<0

X

71>

说明:利用输入的16字节密钥对数据做3DES/DES的CBC或ECB加密

消息格式:

输入域

命令

银行索引号

密钥KEY

初始向量

加/解密标识

算法标识

长度

1

2

16

8

1

1

类型

H

H

H

H

H

H

备注

0x71

区域主密钥索引号

加/解数据的密钥密文

CBC加密的初始向量

1为加密,0为解密

第0位:ECB=0,CBC=1

第1位:3DES=0,DES=1

LEN

数据

输出域

应答码

LEN

DATA

2

N

长度

1

2

N

H

H

类型

A

H

H

处理数据的长度

N=LEN

备注

“A”

返回数据长度

输入数据补齐8的整数倍长度

后的加密结果

应答码

错误码

1

1

A

H

“E”

0x 0C:非法银行主密钥索引号

0x 59:输入的数据长度错误

0x 2C:非法银行主密钥

0x 10: 无效的算法模式

SJL05处理过程:

卫士通信息产业股份有限公司 /

- 87 -

1) 取出指定的区域主密钥ZMK;

2) 用ZMK对输入的密钥KEY做3DES解密,得到密钥明文PKEY;

3) 检查输入数据长度是否为8的倍数,不是,补0x00使之长度为

8的倍数;

4) 根据加/解密标识和算法标识,用PKEY对DATA做3DES/DES

的CBC/ECB加密或解密。

5) 如果成功,返回加密或解密的结果及其长度。

卫士通信息产业股份有限公司 /

- 88 -

用区域主密钥对数据加/解密<0

X

72>

说明:用指定的区域主密钥以输入数据做3DES/DES的ECB或CBC加/

解密

消息格式:

输入域

命令

区域主密钥索引

初始向量

加/解密标识

算法标识

长度

1

2

8

1

1

类型

H

H

H

H

H

备注

0x72

CBC加密的初始向量

1为加密,0为解密

第0位:ECB=0,CBC=1

第1位:3DES=0,DES=1

LEN

数据

输出域

应答码

LEN

DATA

2

N

长度

1

2

N

H

H

类型

A

H

H

处理数据的长度

N=LEN

备注

“A”

返回数据长度

输入数据补齐8的整数倍长度

后的加密结果

应答码

错误码

1

1

A

H

“E”

0x 0C:非法银行主密钥索引号

0x 59:输入的数据长度错误

0x 2C:非法银行主密钥

0x 10:无效的DES算法模式

SJL05处理过程

1) 取出指定的区域主密钥ZMK;

2) 检查送入数据长度是否为8的倍数,如果不是,补0x00;

3) 根据加/解密标识和算法标识,用ZMK对补齐后的数据进行

卫士通信息产业股份有限公司 /

- 89 -

DES/3DES 的CBC/ECB加密或解密;

4) 如果成功,返回加密或解密的结果及其长度。

卫士通信息产业股份有限公司 /

- 90 -

数据密钥转换<0

X

73>

说明:用私钥将公钥加密(无补位)的数据密钥解密,再重新用指定的区

域主密钥加密。

消息格式:

输入域

命令

银行索引号

RSA密钥索引

口令

LEN

数据

输出域

应答码

KEY

长度

1

2

2

8

2

N

长度

1

16

类型

H

H

H

A

H

H

类型

A

H

备注

0x73

区域主密钥索引号

RSA密钥索引

RSA密钥访问口令

处理数据的长度

N=LEN

备注

“A”

用指定区域主密钥加密的数据

密钥

应答码

错误码

1

1

A

H

“E”

0x 0C:非法银行主密钥索引号

0x 02:无银行主密钥

0x C2:数据长度错误

0xC1:非法的RSA索引号

0xCB:无RSA密钥

0xC4:RSA口令验证失败

SJL05处理过程:

1) 验证RSA访问口令;

2) 取出指定的RSA私钥,用私钥对数据进行解密,得到明文数据

密钥DK;

卫士通信息产业股份有限公司 /

- 91 -

3) 取出指定的区域主密钥ZMK;

4) 用ZMK对DK做3DES加密,得到密钥密钥密文C_DK;

5) 如果成功,返回密钥密文C_DK。

卫士通信息产业股份有限公司 /

- 92 -

转换工作密钥主密钥<0

X

74>

说明:将工作密钥从区域主密钥1加密转换到区域主密钥2加密。

消息格式:

输入域

命令

区域主密钥1索引

工作密钥

区域主密钥2索引

输出域

应答码

数据密钥

应答码

错误码

长度

1

2

16

2

长度

1

16

1

1

类型

H

H

H

H

类型

A

H

A

H

备注

0x74

转换前主密钥

密钥密文

转换后主密钥

备注

“A”

用区域主密钥二加密

“E”

0x0C:非法银行主密钥索引号

0x 02:无银行主密钥

SJL05处理过程:

1) 取出区域主密钥一ZMK1和区域主密钥二ZMK2;

2) 用ZMK1对输入工作密钥做3DES解密,得到密钥明文P_WK;

3) 用ZMK2对P_WK做3DES加密,得到密钥密文C_WK;

4) 如果成功,返回密钥密文C_WK。

卫士通信息产业股份有限公司 /

- 93 -

转换密钥<0

X

75>

说明:将PIK或MAK从TMK1加密转换为TMK2加密输出

消息格式:

输入域

命令

区域主密钥1索引号

区域主密钥2索引号

终端主密钥1

PIK密文

终端主密钥2

输出域

应答码

PIK

PIK

应答码

错误码

长度

1

2

2

8

8

8

长度

1

8

8

1

1

类型

H

H

H

H

H

H

类型

A

H

H

A

H

备注

0x77

用BMK1加密的TMK1

用TMK1加密的PIK

用BMK2加密的TMK2

备注

“A”

用TMK2加密和PIK

用BMK2加密的PIK

“E”

0x 0C:非法银行主密钥索引号

0x 02:无银行主密钥

SJL05处理过程:

1) 取出区域主密钥1和区域主密钥2

2) 解密输入密钥(TMK1,TMK2,PIK)得到相应的明文

3) 用TMK2明文和BMK2加密PIK,得到输出

卫士通信息产业股份有限公司 /

- 94 -

生成用ZMK和RSA加密的随机密钥<0

X

77>

说明:生成两个随机密钥,分别被ZMK和RSA公钥加密(有补位)后返

回。

消息格式:

输入域

命令

区域主密钥索引号

模长

RSA公钥

输出域

应答码

KEY1

KEY2LEN

长度

1

2

2

N

长度

1

16

2

类型

H

H

H

H

类型

A

H

H

备注

0x77

RSA模长

位数等于模长

备注

“A”

用ZMK加密后的随机密钥

用RSA公钥加密后的随机密钥

长度

KEY2

应答码

错误码

N

1

1

H

A

H

用RSA公钥加密后的随机密钥

“E”

0x 0C:非法银行主密钥索引号

0x 02:无银行主密钥

SJL05处理过程:

1) 生成128位随机密钥DK;

2) 取出指定的区域主密钥ZMK,用ZMK对DK做3DES加密,

得到密文密钥C_DK1;

3) 用RSA公钥对DK做加密(有补位),得到密文密钥C_DK2;

4) 如果成功,返回C_DK1、C_DK2的长度及C_DK2。

卫士通信息产业股份有限公司 /

- 95 -

数据密钥转换<0

X

78>

说明:用私钥将公钥加密(有补位)的数据密钥解密,再重新用指定的区

域主密钥加密。

消息格式:

输入域

命令

区域主密钥索引号

RSA密钥索引

口令

LEN

数据

输出域

应答码

KEY

长度

1

2

2

8

2

N

长度

1

16

类型

H

H

H

H

H

H

类型

A

H

备注

0x78

RSA密钥索引

RSA密钥访问口令

处理数据的长度

N=LEN

备注

“A”

用指定区域主密钥加密的数据

密钥

应答码

错误码

1

1

A

H

“E”

0x0C:非法银行主密钥索引号

0x02:无银行主密钥

0xC2:数据长度错误

0xC1:非法的RSA索引号

0xCB:无RSA密钥

0xC4: RSA口令验证失败

SJL05处理过程:

1) 验证RSA访问口令;

2) 取出指定的RSA私钥,用私钥对数据进行解密,得到明文数据

密钥DK;

3) 取出指定的区域主密钥ZMK;

卫士通信息产业股份有限公司 /

- 96 -

4) 用ZMK对DK做3DES加密,得到密钥密钥密文C_DK;

5) 如果成功,返回C_DK。

卫士通信息产业股份有限公司 /

- 97 -

验证和生成MAC<0

X

80>

说明:用输入密钥验证数据段1MAC,成功后再返回数据段2的MAC。

消息格式:

输入域

命令

MAC密钥

区域主密钥索引

MAC

数据段1长度

数据段1

分割符

数据段2长度

数据段2

输出域

应答码

MAC

应答码

错误码

长度

1

8

2

4

2

L1

1

2

L2

长度

1

8

1

1

类型

H

H

H

H

H

H

A

H

H

类型

A

H

A

H

备注

0x80

用区域主密钥加密

MAK加密密钥

需验证的数据段1MAC

验证MAC数据

‘;’

计算MAC数据

备注

“A”

数据段2的MAC

“E”

0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错

(第一个银行的MAK)

0x 2E:无效的MAC长度

0x 2D:MAC验证失败

0x 2 5:无效的MAC数据

SJL05处理过程:

1) 取出指定的区域主密钥ZMK,用ZMK对输入的MAC密钥做

3DES解密,得到密钥明文MAK;

卫士通信息产业股份有限公司 /

- 98 -

2) 用MAK计算数据一的MAC(遵循ANSI X.99标准,初始向量

为8字节0x00),比较计算结果与输入MAC,如果不一致,返

回出错代码EMAC_AUTH(0x2D);

3) 用MAK计算数据二的MAC(遵循ANSI X.99标准,初始向量为

8字节0x00),返回计算结果;

4) 如果成功,返回数据二的MAC。

卫士通信息产业股份有限公司 /

- 99 -

验证MAC<0

X

81>

说明:输入一个MAC和一串MAC数据。计算输入的数据的MAC并与输

入的MAC比较是否相等。

消息格式:

输入域

命令

MAK

区域主密钥索引

MAC

LEN

数据

输出域

应答码

应答码

错误码

长度

1

8

2

4

2

N

长度

1

1

1

类型

H

H

H

H

H

A

类型

A

A

H

备注

0x81

用于计算MAC

MAK的主密钥

输入MAC

计算MAC的数据的长度

计算MAC的数据,N=LEN

备注

“A”

“E”

0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29:MAC密钥奇偶校验错

(第一个银行的MAC)

0x 2E:无效的MAC长度

0x 2D:MAC验证失败

SJL05处理过程:

1) 取出指定的区域主密钥ZMK,用ZMK对MAK进行3DES解

密,得到MAK的明文密钥PMAK;

2) 判断PMAK的有效性;

3) 判断MAC数据长度是否为8的倍数,如果不够,用0x00补齐;

卫士通信息产业股份有限公司 /

- 100 -

4) 用PMAK对补齐后数据进行DES_CBC方式加密;

5) 比较最后一段加密结果的前四个字节和输入MAC,一致返回正

确,不一致返回出错代码0x2D。

卫士通信息产业股份有限公司 /

- 101 -

计算卡属性和密文数据的MAC

<0

X

82>

说明:计算卡属性和密文数据的MAC。

消息格式:

输入域

命令

MAK

区域主密钥索引

RED

LEN

数据

输出域

应答码

MAC

应答码

错误码

长度

1

8

2

4

2

N

长度

1

8

1

1

类型

H

H

H

H

H

A

类型

A

H

A

H

备注

0x82

用于计算MAC

MAK的主密钥索引号

卡属性

计算MAC的数据的长度

计算MAC的数据,N=LEN

备注

“A”

MAC

“E”

0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错

(第一个银行的MAK)

0x 2E: 无效的MAC长度

SJL05处理过程:

1) 取出指定的区域主密钥ZMK;

2) 用ZMK对MAK做DES解密,得到明文密钥PMAK;

3) 将RED放在MAC数据的前面,组成新的数据DATA;

4) 判断DATA长度是否为8的倍数,如果不是,用0x00补齐;

5) 用PMAK对补齐后的数据做DES CBC加密。

卫士通信息产业股份有限公司 /

- 102 -

6) 如果成功,返回最后一段的加密结果MAC。

卫士通信息产业股份有限公司 /

- 103 -

验证卡属性与数据串的MAC

<0

X

83>

说明:验证由卡属性与数据串的MAC。

消息格式:

输入域

命令

MAK

区域主密钥索引

MAC

RED

LEN

数据

输出域

应答码

MAC

应答码

错误码

长度

1

8

2

4

4

2

N

长度

1

8

1

1

类型

H

H

H

H

H

H

A

类型

A

H

A

H

备注

0x83

用于计算MAC

MAK的主密钥索引号

验证的MAC

卡属性

计算MAC的数据的长度

计算MAC的数据,N=LEN

备注

“A”

MAC

“E”

0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错

(第一个银行的MAK)

0x 2E:无效的MAC长度

0x 2D:MAC验证失败

SJL05处理过程:

1) 计算MAC(计算方法参见命令0x82);

2) 比较计算出的MAC与输入的MAC,如果一致,返回;否则,

卫士通信息产业股份有限公司 /

- 104 -

返回错误代码0x2D。

卫士通信息产业股份有限公司 /

- 105 -

2.46

请求产生MAC,并可选择地转换

PIN<0

X

84>

说明:用MAK产生一个MAC。同时当转换PIN标识为1时,可以转换一

个用ATK加密的PIN到PIK加密的PIN。

消息格式:

输入域

命令

区域主密钥索引

转换PIN标志

长度

1

2

1

类型

H

H

H

备注

0x84

MAK的主密钥索引号

0:只计算MAC

1:产生MAC和计算PIN

PIN 8 H PIN密文,ATK加密(标志为

1时才有)

校验码

PIK

MAK

LEN

数据

输出域

应答码

MAC

应答码

PIN

MAC

应答码

2

8

8

2

N

长度

1

8

1

8

8

1

H

H

H

H

A

类型

A

H

A

H

H

A

(标志为1时才有)

用它加密PIN

用于计算MAC

计算MAC的数据的长度

计算MAC的数据,N=LEN

备注

“A”

计算的MAC值

“A”

用PIK加密的PIN

计算的MAC值

“E”

卫士通信息产业股份有限公司 /

- 106 -

错误码 1 H 0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错

(第一个银行的MAK)

0x 2E:无效的MAC长度

0x 05:无终端主密钥

0x 2D:MAC验证错误

0x 19: PIK密钥奇偶校验错误

(第一个银行的PIK)

0x 2F:无效的加密PIN或MAC

标志

SJL05处理过程:

1) 取出指定的ZMK;

2) 用ZMK对MAK做3DES解密,得到密钥明文PMAK;

3) 验证PMAK有效性;

4) 检查MAC数据长度是否为8的倍数,如果不是,用0x00补齐;

5) 用PMAK对补齐后的数据进行DES CBC方式加密,得到最后

一段的加密结果为MAC;

6) 如果只计算MAC,返回MAC,结束任务;

7) 如果要进行PIN转换,取出ATK;

8) 用ZMK对PIK进行3DES解密,得到明文密钥P_PIK;

9) 验证P_PIK有效性;

10) 取出终端密钥ATK,用ATK对PIN做DES解密,得到PINR

明文P_PIN;

11) 验证P_PIN的有效性;

12) 用P_PIK对P_PIN做DES加密,得到PIN的密文C_PIN。

13) 如果正确,返回C_PIN和MAC。

卫士通信息产业股份有限公司 /

- 107 -

转换MAC<0

X

85>

说明:用解密后MAK1对数据计算MAC,并与输入的MAC进行比较,如

果一致,用解密后的MAK2计算MAC,并返回MAC结果。

消息格式:

输入域

命令

MAK1

区域主密钥1索引

MAK2

区域主密钥2索引

MAC

LEN

MAC数据

输出域

应答码

MAC

应答码

错误码

长度

1

8

2

8

2

4

2

N

长度

1

8

1

1

类型

H

H

H

H

H

H

H

H

类型

A

H

A

H

备注

0x85

转换前的MAK

MAK1的主密钥索引号

转换后的MAK

MAK2的主密钥索引号

用MAK1生成的MAC

计算MAC的数据长度

计算MAC的数据,N=LEN

备注

“A”

用MAK2计算的MAC

“E”

0C:非法银行主密钥索引号

2C:非法银行主密钥

29: MAK密钥奇偶校验错(第

一个银行的MAK)

2E:无效的MAC长度

2D:MAC验证失败

SJL05处理过程:

卫士通信息产业股份有限公司 /

- 108 -

1) 取出指定的区域主密钥ZMK1和ZMK2;

2) 用ZMK1对MAK1做3DES解密,得到明文密钥PMAK1;

3) 验证PMAK1有效性;

4) 检查DATA长度是否为8的倍数,如果不是,用0x00补齐;

5) 用PMAK1对补齐的数据做DES CBC加密;

6) 对比最后一段数据加密结果的前四个字节与输入的MAC;

7) 如果不一致,则返回出错代码0x2D;

8) 如果一致,则用ZMK2对MAK2做DES解密,得到明文密钥

PMAK2;

9) 验证PMAK2的有效性;

10) 用PMAK2对补齐的数据做DES CBC加密;

11) 如果成功,返回最后一段数据加密结果MAC。

卫士通信息产业股份有限公司 /

- 109 -

转换一个MAC和PIN<0

X

86>

说明:从银行一到银行二,转换一个MAC和PIN

消息格式:

输入域

命令

PIN密文

校验码

PIK1

MAK1

区域主密钥1索引

PIN2

MAK2

区域主密钥2索引

MAC

LEN1

MAC数据1

LEN2

MAC数据2

输出域

应答码

PIN

MAC

应答码

错误码

长度

1

8

2

8

8

2

8

8

2

4

2

N1

2

N2

长度

1

8

8

1

1

类型

H

H

H

H

H

H

H

H

H

H

H

H

H

H

类型

A

H

H

A

H

备注

0x86

用PIK1加密的PIN

校验码

用于解密PIN

输入MAC的密钥

MAK1的主密钥索引号

加密PIN的密钥

需要生成MAC的密钥

MAK2的主密钥索引号

要转换的MAC

MAC数据1的长度

MAC数据1,N1=LEN1

MAC数据2的长度

MAC数据2,N2=LEN2

备注

“A”

用PIK2加密的PIN

用MAK2计算的MAC

“E”

0x2C:非法银行主密钥

0x 19: PIK密钥奇偶校验错误

(第一个银行的PIK)

卫士通信息产业股份有限公司 /

- 110 -

0x18: PIK密钥奇偶校验错误

(第二个银行的PIK)

0x1D:PIN验证错误

0x 28:MAK密钥奇偶校验错

(第二个银行的MAK)

0x 29: MAK密钥奇偶校验错

(第一个银行的MAK)

0x 2D:MAC验证失败

0x 2E:无效的MAC长度

SJL05处理过程:

1) 取出指定的区域主密钥ZMK1和ZMK2;

2) 用ZMK1对MAK1做DES解密,得到明文密钥PMAK1,用

ZMK1对PIK1做DES解密,得到明文密钥P_PIK1;

3) 验证PMAK1和P_PIK1的有效性;

4) 用P_PIK1对PIN做DES解密,得到其明文P_PIN;

5) 验证P_PIN的有效性;

6) 检查MAC数据一长度是否为8的倍数,如果不是,用0x00补

齐;

7) 用PMAK1对补齐的数据做DES CBC加密,取最后一段数据

加密结果的前四字节为MAC1;

8) 比较MAC1与MAC,如果不一致,返回出错代码0x2D;

9) 用ZMK2对MAK2做DES解密,得到明文密钥PMAK2,用

ZMK2对PIK2做DES解密,得到明文密钥P_PIK2;

10) 验证PMAK2和P_PIK2的有效性;

11) 用P_PIK2对P_PIN做DES加密,得到PIN密文C_PIN;

12) 检查MAC数据二长度是否为8的倍数,如果不是,用0x00补

齐;

13) 用PMAK2对补齐的数据二做DES CBC加密,取最后一段加

卫士通信息产业股份有限公司 /

- 111 -

密结果为数据二的MAC2;

14) 如果成功,返回C_PIN和MAC2。

修改:1)验证码无效,即不将PIN的明文的后四位与验证码相比较;

2)对PIN的明文的第一位16进制数进行检查,若不为’0’,

则报PIN验证失败(1D)。

3)输入的MAC数据2的长度和输入的MAC数据2为新增的内容。

卫士通信息产业股份有限公司 /

- 112 -

请求验证MAC,可选择地验证PIN<0

X

87>

说明:用MAK验证一个MAC。同时当验证PIN标识为1时,可以验证一

个PIN。

消息格式:

输入域

命令

区域主密钥索引

转换PIN标志

长度

1

2

1

类型

H

H

H

备注

0x87

加密MAK的主密钥

0:只计算MAC

1:产生MAC和计算PIN

PIN1

校验码1

PIK1

PIN2

校验码2

PIK2

MAK

MAC

LEN

数据

输出域

应答码

MAC

应答码

错误码

8

2

8

8

2

8

8

4

2

N

长度

1

8

1

1

H

H

H

H

H

H

H

H

H

A

类型

A

H

A

H

PIN密文,PIK1加密

用它解密PIN1

PIN密文,PIK2加密

用它解密PIN2

用于计算MAC

将被验证的MAC

计算MAC的数据的长度

计算MAC的数据,N=LEN

备注

“A”

计算的MAC值

“E”

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错

(第一个银行的MAK)

卫士通信息产业股份有限公司 /

- 113 -

0x 2E:无效的MAC长度

0x 2D:MAC验证失败

0x 18: PIK密钥奇偶校验错误

(第二个银行的PIK)

0x 19: PIK密钥奇偶校验错误

(第一个银行的PIK)

0x 1D:PIN验证错误

SJL05处理过程:

1) 取出指定的区域主密钥ZMK;

2) 用ZMK对MAK进行3DES解密,得到明文密钥PMAK;

3) 验证PMAK的有效性;

4) 检查MAC数据长度是否为8的倍数,如果不是,用0x00补齐;

5) 用PMAK对补齐后的数据做DES CBC加密,比较最后一段数

据加密结果的前四字节与输入的MAC;

6) 如果不一致,返回出错代码0x2D;

7) 如果只计算MAC,返回MAC;

8) 如果需要验证PIN,继续下面处理;

9) 用ZMK对PIK1进行3DES解密,得到明文密钥P_PIK1;

10) ZMK对PIK2进行3DES解密,得到明文密钥P_PIK2;

11) 验证P_PIK1与P_PIK2的有效性;

12) 用P_PIK1对PIN1做DES解密,得到PIN1明文P_PIN1;

13) 用P_PIK2对PIN2做DES解密,得到PIN2明文P_PIN2;

14) 验证P_PIN1与P_PIN2的有效性;

15) 比较P_PIN1与P_PIN2,如果一致,返回MAC,否则,返回

PIN认证失败出错代码0x1D。

卫士通信息产业股份有限公司 /

- 114 -

产生随机密钥,用TMK加密后返回<0

X

88>

说明:生成8字节随机工作密钥,并用指定终端主密钥加密返回。

消息格式:

输入域

命令

终端主密钥索引

输出域

应答码

数据密钥

应答码

错误码

长度

1

2

长度

1

8

1

1

类型

H

H

类型

A

H

A

H

备注

0x88

加密工作密钥的主密钥

备注

“A”

用终端主密钥加密

“E”

0x 0C:非法银行主密钥索引号

0x 05:无终端主密钥

SJL05处理流程:

1) 取出指定终端主密钥TMK;

2) 生成8字节随机工作密钥DK;

3) 用TMK对DK做DES加密,得到密钥密文C_DK;

4) 如果成功,返回用终端主密钥加密的C_DK。

卫士通信息产业股份有限公司 /

- 115 -

生成弱MAC<0

X

89>

说明:用终端主密钥或输入密钥计算输入数据的弱MAC。

消息格式:

输入域

命令

密钥选择标志

终端主密钥索引

长度

1

1

2

类型

H

H

H

备注

0x89

0:输入密钥; 1:TMK

输入密钥的主密钥或计算

MAC的MAK

MAK

数据长度

MAC数据

输出域

应答码

MAC

应答码

错误码

8

2

L

长度

1

4

1

1

H

H

H

类型

A

H

A

H

可选。

MAC数据长度

L=数据长度

备注

“A”

返回MAC

“E”

0x0C:非法银行主密钥索引号

0x05:无终端主密钥

0x2E:无效的MAC长度

0x2F:无效的加密PIN或MAC

标志

SJL05处理过程:

1) 取指定的终端主密钥TMK;

2) 如果密钥标志字节为“0”,用TMK对输入数据密钥做DES解

密,得到MAK;如果密钥标志字节为“1”,MAK=TMK;

3) 用MAK对输入数据计算弱密钥(弱密钥计算方法见附录F),

卫士通信息产业股份有限公司 /

- 116 -

如果正确,返回计算结果MAC。

卫士通信息产业股份有限公司 /

- 117 -

用终端主密钥加密数据<0

X

8A>

说明:用终端主密钥加密输入的8字节数据。

消息格式:

输入域

命令

终端主密钥索引

数据

输出域

应答码

数据

应答码

错误码

长度

1

2

8

长度

1

8

1

1

类型

H

H

H

类型

A

H

A

H

备注

0x8A

待加密数据

备注

“A”

用TMK加密

“E”

0x0C:非法银行主密钥索引号

0x05:无终端主密钥

SJL05处理过程:

1) 取出指定终端主密钥TMK;

2) 用TMK对输入数据做3DES加密,得到数据密文C_DATA;

3) 如果正确,返回用TMK加密的C_DATA。

卫士通信息产业股份有限公司 /

- 118 -

用输入密钥对输入数据作加/解密<0

X

8B>

说明:用输入密钥根据标志对输入数据作DES CBC加密或解密。

消息格式:

输入域

命令

加/解密标志

终端主密钥索引

密钥

数据长度

数据

输出域

应答码

返回数据

应答码

错误码

长度

1

1

2

8

2

L

长度

1

L

1

1

类型

H

A

H

H

H

H

类型

A

H

A

H

备注

0x8B

‘0’:加密; ‘1’:解密

输入密钥主密钥

用终端主密钥加密

L=数据长度

备注

“A”

L=(输入数据长度+7)/8*8

“E”

0x0C:非法银行主密钥索引号

0x05:无终端主密钥

0x2E:无效的MAC长度

0x2F:无效的加密PIN或MAC

标志

SJL05处理过程:

1) 取出指定的终端主密钥TMK,用TMK对输入密钥做DES解密,

得到密钥明文P_DK;

2) 检查输入数据长度,如果长度不是8的倍数字节,在数据最后

补0x00至长度为8的倍数字节,得到数据DATA;

3) 根据加/解密钥标志,用P_DK对DATA做DES CBC加密或解

卫士通信息产业股份有限公司 /

- 119 -

密,如果正确,返回最后加/解密数据结果。

产生MAC<0

X

8C>

说明:用ANSI 9.19的方式,产生MAC。

消息格式:

输入域

命令

TMK主密钥索引

TMK密文

TMK标志

长度

1

2

16

1

类型

H

H

H

H

备注

0x8C

加密MAK的主密钥

用LMK保护的TMK密文

0-表示TMK已存储在加密机

中;

1-表示TMK密文方式传给加

密机

MAK密文

MAC初始向量

MAC数据长度

MAC数据

输出域

应答码

MAC

应答码

错误码

16

8

2

L

长度

1

8

1

1

H

H

H

类型

A

H

A

H

MAK的密文

MAC初始向量

L=MAC数据长度

备注

“A”

计算的MAC

“E”

0x 0D:非法终端主密钥索引号

0x 05:无终端主密钥

0x 27:无本地主密钥

0x10:无效的TMK标志

SJL05处理过程:

1) 如果TMK标志为0时,取出对应TMK索引号下的密钥;如果

卫士通信息产业股份有限公司 /

- 120 -

为1时,则先取出LMK,然后用LMK解密TMK密文;

2) 用TMK明文对MAK进行解密;

3) 采用ANSI 9.19方式产生MAC。

卫士通信息产业股份有限公司 /

- 121 -

校验MAC<0

X

8D>

说明:用ANSI 9.19的方式,校验MAC。

消息格式:

输入域

命令

TMK主密钥索引

TMK密文

TMK标志

长度

1

2

16

1

类型

H

H

H

H

备注

0x8D

加密MAK的主密钥

用LMK保护的TMK密文

0-表示TMK已存储在加密机

中;

1-表示TMK密文方式传给加

密机

MAK密文

MAC初始向量

校验MAC

MAC数据长度

MAC数据

输出域

应答码

应答码

错误码

16

8

8

2

L

长度

1

1

1

H

H

H

H

类型

A

A

H

MAK的密文

MAC初始向量

校验用的MAC

L=MAC数据长度

备注

“A”

“E”

0x 0D:非法终端主密钥索引号

0x 05:无终端主密钥

0x 27:无本地主密钥

0x10:无效的TMK标志

SJL05处理过程:

1) 如果TMK标志为0时,取出对应TMK索引号下的密钥;如果

为1时,则先取出LMK,然后用LMK解密TMK密文;

卫士通信息产业股份有限公司 /

- 122 -

2) 用TMK明文对MAK进行解密;

3) 采用ANSI 9.19方式校验MAC。

卫士通信息产业股份有限公司 /

- 123 -

请求产生一个商户MAC<0

X

90>

说明:输入一串MAC数据。计算输入的数据的MAC。

消息格式:

输入域

命令

MAK

附加信息

LEN

MAC数据

输出域

应答码

MAC

应答码

错误码

长度

1

16

8

2

N

长度

1

8

1

1

类型

H

H

H

H

H

类型

A

H

A

H

备注

0x90

用它产生PMK

计算MAC的数据长度

计算MAC的数据,N=LEN

备注

“A”

计算的MAC

“E”

0x27:无效的主机主密钥

0x26:MAK密钥奇偶校验错(第

三个银行的MAK)

0x2E:无效的MAC长度

SJL05处理过程:

1) 取出本地主密钥LMK;

2) 用LMK对MCK做3DES解密,得到明文密钥PMCK;

3) 验证PMCK的有效性;

4) 用PMCK对附加信息做3DES加密,得到MAC密钥MAK;

5) 检查MAC数据长度是否为8的倍数,如果不是,用0x00补齐;

6) 用MAK对补齐后的数据做DES CBC加密,返回最后一段数据

卫士通信息产业股份有限公司 /

- 124 -

加密结果为MAC。

卫士通信息产业股份有限公司 /

- 125 -

请求验证一个商户MAC<0

X

91>

说明:输入一个MAC和一串MAC数据,计算输入的数据的MAC并与

消息格式:

输入域

命令

MAK

附加信息

MAC

LEN

MAC数据

输出域

应答码

应答码

错误码

长度

1

16

8

4

2

N

长度

1

1

1

类型

H

H

H

H

H

H

类型

A

A

H

备注

0x91

用它产生PMK

用于验证的MAC

计算MAC的数据长度

计算MAC的数据,N=LEN

备注

“A”

“E”

0x27:无效的主机主密钥

0x26: MAK密钥奇偶校验错

(第三个银行的MAK)

0x2E:无效的MAC长度

0x2D:MAC验证失败

SJL05处理过程:

1) 计算MAC(参见0x90命令);

2) 比较计算出的MAC前四个字节与输入的MAC,如果一致,正

确返回,否则,返回MAC认证失败出错代码0x2D。

卫士通信息产业股份有限公司 /

- 126 -

输入的MAC比较是否相等。

用TMK计算

MAC<0

X

92>

说明:用解密后的TMK对附加信息加密,得到MAC密钥PMK,用PMK

对MAC数据作MAC。

消息格式:

输入域

命令

BTMK

附加信息

密钥索引

LEN

MAC数据

输出域

应答码

MAC

应答码

错误码

长度

1

8

8

2

2

N

长度

1

8

1

1

类型

H

H

H

H

H

H

类型

A

H

A

H

备注

0x92

用它产生TMK

次主密钥索引号

计算MAC的数据长度

计算MAC的数据,N=LEN

备注

“A”

计算出的MAC

“E”

0x0C:非法银行主密钥索引号

0x2E:无效的MAC长度

SJL05处理过程:

1) 取出指定的区域主密钥ZMK;

2) 用ZMK对bTMK做3DES解密,得到明文密钥TMK;

3) 用TMK对附加信息做DES加密,得到MAC密钥PMK;

4) 检查MAC数据长度是否为8的倍数,如果不是,用0x00补齐;

5) 用MAK对补齐后的数据做DES CBC加密,返回最后一段数据加

密结果为MAC。

卫士通信息产业股份有限公司 /

- 127 -

请求验证用TMK计算的MAC<0

X

93>

说明:输入一个MAC和一串MAC数据,计算输入的数据的MAC并与

消息格式:

输入域

命令

BTMK

附加信息

MAC

LEN

MAC数据

密钥索引

输出域

应答码

应答码

错误码

长度

1

8

8

4

2

N

2

长度

1

1

1

类型

H

H

H

H

H

H

H

类型

A

A

H

备注

0x93

用它产生TMK

用于验证的MAC

计算MAC的数据长度

计算MAC的数据,N=LEN

次主密钥的索引号

备注

“A”

“E”

0x0C:非法银行主密钥索引号

0x2E:无效的MAC长度

0x2D:MAC验证失败

SJL05处理过程:

1) 出指定的区域主密钥ZMK;

2) 用ZMK对bTMK做3DES解密,得到明文密钥TMK;

3) 用TMK对附加信息做DES加密,得到MAC密钥PMK;

4) 检查MAC数据长度是否为8的倍数,如果不是,用0x00

补齐;

5) 用MAK对补齐后的数据做DES CBC加密,得到MAC。

卫士通信息产业股份有限公司 /

- 128 -

输入的MAC比较是否相等。

6) 比较计算出的MAC前四个字节与输入的MAC,如果一致,

正确返回,否则,返回MAC认证失败出错代码0x2D。

卫士通信息产业股份有限公司 /

- 129 -

打印PIN<0

X

96>

说明:解密并打印PIN

消息格式:

输入域

命令

KEY

银行主密钥索引

PIN密文

主帐号

附加信息

输出域

应答码

应答码

错误码

长度

1

8

2

8

8

1

长度

1

1

1

类型

H

H

H

H

H

H

类型

A

A

H

备注

0x96

BMK加密的KEY密文

被PIK加密的PIN密文

备注

“A”

“E”

0x01:无本地主密钥

0x02:无银行主密钥

0x0c:无效的银行主密钥索引

0x34:打印未授权

0x35:解密PIN未授权

0x19:奇偶校验错

0x20:PIN错误

SJL05处理过程:

1)、PIN解密授权和串口打印授权

2)、取出BMK

卫士通信息产业股份有限公司 /

- 130 -

3)、用BMK解密得到PIK明文

4)、用PIK明文解密得到PIN Block明文

5)、解密得到的PIN Block与主帐号异或得到PIN

6)、PIN与输入的PIN比较

7)、打印PIN

卫士通信息产业股份有限公司 /

- 131 -

计算密钥的C

HECK

V

ALUE

<0

X

97>

说明:计算输入密钥的CheckValue。

消息格式:

输入域

命令

KEY

区域主密钥索引

输出域

应答码

CheckValue

应答码

错误码

SJL05处理过程:

1) 取出指定的区域主密钥ZMK;

2) 用ZMK对KEY做3DES解密,得到明文密钥PKEY;

3) 用PKEY对8字节的0x00做DES加密,加密结果即为其

CheckValue;

长度

1

8

2

长度

1

4

1

1

类型

H

H

H

类型

A

H

A

H

备注

0x97

ZMK加密的KEY密文

备注

“A”

KEY的CheckValue

“E”

0x02:无银行主密钥

4) 返回CheckValue。

卫士通信息产业股份有限公司 /

- 132 -

解密PIN<0

X

98>

说明:解密PIN并输出明文PIN

消息格式:

输入域

命令

PIK密文

区域主密钥索引

PIN密文

主帐号

输出域

应答码

PIN

应答码

错误码

长度

1

8

2

8

8

长度

1

8

1

1

类型

H

H

H

H

H

类型

A

H

A

H

备注

0x98

用BMK加密的PIK

用PIK加密的PIN

备注

“A”

明文PIN

“E”

0x02:无银行主密钥

0x0C:无效的银行主密钥索引

0x35:没有授权解PIN

0x19:奇偶校验错误

SJL05处理过程:

1) 读出BMK,并检查解密PIN授权

2) 用BMK解密得到PIK明文,用PIK明文解密得到PIN明文

3) PIN明文与主帐号异或得到PIN明文输出

卫士通信息产业股份有限公司 /

- 133 -

转换PIN从ATK到PIK<0

X

99>

说明:将PIN从ATK加密转换为PIK加密后输出

消息格式:

输入域

命令

区域主密钥索引

TMK密文

PIK1密文

PIK2密文

PIN密文

附加信息

输出域

应答码

PIN密文

应答码

错误码

长度

1

2

8

8

8

8

4

长度

1

8

1

1

类型

H

H

H

H

H

H

H

类型

A

H

A

H

备注

0x99

用BMK加密的TMK

用TMK加密的PIK

用BMK加密的PIK

用PIK1加密的PIN

备注

“A”

用PIK2加密的PIN

“E”

0x02:无银行主密钥

0x0C:无效的银行主密钥索引

0x20:非法的附加信息

0x19:奇偶校验错误

0x1E:无效的PIN

0x1F:无效的PIK

SJL05处理过程:

2) 读出BMK

3) 用BMK解密得到TMK明文

卫士通信息产业股份有限公司 /

- 134 -

4) 用TMK解密得到PIK1明文

5) 用BMK解密得到PIK2明文

6) 检验附加信息和PIK1是否有效

7) 用PIK1解密得到PIN明文

8) 用PIK2加密PIN明文得到输出

卫士通信息产业股份有限公司 /

- 135 -

转换任意长度的数据密钥<0

X

0401>

说明:将数据密钥从一个区域主密钥或本地主密钥或终端主密钥加密格式

转换到用其他区域主密钥或本地主密钥或终端主密钥加密的密文。

消息格式:

输入域

命令类型

命令

区域主密钥索引1

长度

1

1

2

类型

H

H

H

备注

0x04

0x01

0xFFFF:用LMK解密

0xF000-0xF063:终端主密钥,低

字节为密钥索引

0-999表示为区域主密钥索引

加密算法1 1 H 区域主密钥对数据密钥的加密算

0:64 BIT 3DES

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

数据密钥长度

数据密钥

1

N

H

H

8/16/24等,必须是8的整数倍

用区域主密钥索引1加密的数据

密钥

区域主密钥索引2 2 H 0xFFFF:用LMK解密

0xF000-0xF063:终端主密钥,低

字节为密钥索引

0-999表示为区域主密钥索引

加密算法2 1 H 区域主密钥对数据密钥的解密算

0:64 BIT 3DES

卫士通信息产业股份有限公司 /

- 136 -

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

输出域

应答码

数据密钥长度

数据密钥密文

长度

1

1

N

类型

A

H

H

备注

“A”

8/16/24等,必须是8的整数倍

用本地主密钥或区域主密钥加密

的数据密钥密文

应答码

错误码

SJL05处理过程:

1) 取出本地主密钥LMK1、数据密钥、加密算法1;

A) 如果加密算法1取0 ,用LMK1解密数据密钥(用3DES)

B) 如果加密算法1取1 ,用LMK1解密数据密钥(用两次3DES,类

似LMK对MMK的加解密)

C) 如果加密算法1取2 ,用LMK1解密数据密钥(用三次3DES,类

似LMK对MMK的加解密)

D) 如果加密算法1取其他,出错返回。

2) 取出本地主密钥LMK2、数据密钥明文、加密算法2;

A) 如果本地主密钥LMK2的索引号为-1 ,表示用LMK加密输出

B) 如果加密算法1取0 ,用LMK2加密数据密钥(用3DES)

C) 如果加密算法1取1 ,用LMK2加密数据密钥(用两次3DES,类

似LMK对MMK的加解密)

D) 如果加密算法1取2 ,用LMK2加密数据密钥(用三次3DES,每

次用LMK2对8个字节的数据密钥做3DES。

E) 如果加密算法1取其他,出错返回。

1

1

A

H

“E”

出错类型

卫士通信息产业股份有限公司 /

- 137 -

P

IN

B

LOCK

转换(任意长度PIK)<0

X

0402>

说明:PinBlock转换。

消息格式:

输入域

命令类型

命令

区域主密钥1索引

长度

1

1

2

类型 备注

H

H

H

0x04

0x02

与其他行的共享的区域主密

加密算法1 1 H 区域主密钥对数据密钥的加

密算法

0:64 BIT 3DES

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

数据密钥1长度 1 H 8/16/24等,必须是8的整数

区域PIK1 N

(8/16/24)

PinBlock1算法

PinBlock

主帐号1

区域主密钥2索引

1

8

8

2

H

H

H

H

H 用区域主密钥索引1加密的

数据密钥

见注解

区域PIK1加密

转换前主帐号

其他行的共享前置区域主密

加密算法2 1 H 区域主密钥对数据密钥的加

密算法

0:64 BIT, 3DES

1:128 BIT,3DES

2:192 BIT,3DES

卫士通信息产业股份有限公司 /

- 138 -

其他保留

数据密钥2长度 1 H 8/16/24等,必须是8的整数

区域PIK2 N H 用区域主密钥索引2加密的

数据密钥

PinBlock2算法

主帐号2

输出域

应答码

PinBlock

应答码

错误码

SJL05处理过程:

1) 取出指定的区域主密钥ZMK1和数据密钥、加密算法1;

2) 用ZMK1对区域PIK1用加密算法1指定的算法解密,得到密

钥明文P_ZPK1;

3) 用P_ZPK1 按PinBlock算法指定的算法对输入PinBlock做DES

解密,得到明文P_PinBlock;

4) 用P_PinBlock与主帐号1异或(方法见后面),得到明文P_PIN。

5) 用P_PIN与主帐号2按位异或,得到转换后PinBlock2;

6) 用ZMK2对数据密钥按加密算法2指定的算法做DES解密,得

到密钥明文P_ZPK2;

7) 用P_ZPK2对PinBlock2按PinBlock算法指定的算法做DES加

密,得到密文C_PinBlock;

8) 返回C_PinBlock.

1

8

长度

1

8

1

1

H

H

见注解

转换后主帐号

类型 备注

A

H

A

H

“A”

用区域PIK2加密

“E”

出错类型

卫士通信息产业股份有限公司 /

- 139 -

附 1 PIN与主帐号异或方法:

for (i = 2; i < 8; i++) {

PIN[i] ^= (lpKey->Acco2[i - 1] & 0x0f) << 4;

PIN[i] ^= (lpKey->Acco2[i] & 0xf0) >> 4;

}

附 2 PinBlock算法如下:

PIN算法

0,DES

1,3DES

2,192,3DES

做64BIT对64BIT的单DES

做128BIT对64BIT的3DES

取第一个64BIT对64BIT的PIN作单DES

取第二个64BIT对上次的结果作单DES-1

取第三个64BIT对上次的结果作单DES

其他 保留

卫士通信息产业股份有限公司 /

- 140 -

请求转换一个PIN从ATK

(任意长度)

到PIK

(任

意长度)

<0

X

0403>

说明:输入请求银行的PIK和用ATK加密的PIN,加密机将它们用ATK

解密后,(可选择的与主帐号异或),得到明文PIN,将ATM的PIN格式

转换成ANSIX9.8标准,(可选择的与主帐号异或),并用PIK加密输出。

消息格式:

输入域

命令类型

命令

ATM机类型

ATM密钥索引

ATM密钥长度

PIN

PinBlock解密算法

主帐号1

区域主密钥索引号

加密算法

长度

1

1

1

2

1

8

1

8

2

1

类型

H

H

H

H

H

H

H

H

H

H

备注

0x04

0x03

0x01,0x02,0x04,0x05

1到512

8/16/24等,必须是8的整数倍

ATM密钥加密的密文

见注解

与主帐号1异或得到明文

其他行的共享的区域主密钥

区域主密钥对数据密钥的加密

算法

0:64 BIT, 3DES

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

PIN数据密钥长度

PIN数据密钥

1

N

H

H

8/16/24等,必须是8的整数倍

用区域主密钥索引加密的数据

密钥

PinBlock加密算法

主帐号2

1

8

H

H

见注解

与主帐号2异或输出

- 141 -

卫士通信息产业股份有限公司 /

输出域

应答码

PIN

应答码

错误码

SJL05处理过程:

长度

1

8

1

1

类型

A

H

A

H

备注

“A”

用PIK加密后的PIN密文

“E”

出错类型

1) 取出指定的ATM终端密钥ATK,PIN密文,PIN BLOCK算法和主帐

号1,解出PIN的明文。要求加密机中ATK最长为192BIT:

A) 如果PIN BLOCK算法指定算法为0,就取ATK的前64BIT做单

DES解密;

B) 如果PIN BLOCK算法指定算法为1,就取ATK的前128BIT做3DES

解密;

C) 如果PIN BLOCK算法指定算法为2,就全取ATK的192BIT做3DES

解密;

D) 如果PIN BLOCK算法为其他,出错返回。

2) 根据ATM类型,验证PIN明文的有效性;

3) 取出本地主密钥LMK、数据密钥、加密算法,得到PIK明文P_PIK;

A) 如果加密算法取0 ,用LMK1解密数据密钥(用3DES)

B) 如果加密算法取1 ,用LMK1解密数据密钥(用两次3DES,类似

LMK对MMK的加解密)

C) 如果加密算法取2 ,用LMK1解密数据密钥(用三次3DES,类似

LMK对MMK的加解密)

D) 如果加密算法取其他报错,退出。

4) 根据ATM类型转换为标准的Pin格式;

5) 标准的Pin格式与主帐号2异或得到PinBlock;

卫士通信息产业股份有限公司 /

- 142 -

6) 用P_PIK对PinBlock进行DES加密,得到PinBlock的密文C_PinBlock;

A) 如果PIN BLOCK算法指定算法为0,就取P_PIK的前64BIT做单

DES解密;

B) 如果PIN BLOCK算法指定算法为1,就取P_PIK的前128BIT做

3DES解密,如果P_PIK只有64BIT,报错返回;

C) 如果PIN BLOCK算法指定算法为2,就取P_PIK的192BIT做3DES

解密,如果P_PIK只有64BIT,报错返回;

D) 如果PIN BLOCK算法为其他,出错返回。

7) 返回C_PinBlock。

注意:ATM机型号和PIN格式请参见下页附录。

卫士通信息产业股份有限公司 /

- 143 -

附录 ATM和POS机类型和PIN的格式

类型1---

PIN格式:

BYTE1--BYTE2

BYTE3--BYTE8

ASCII"0"

PIN

类型2---

PIN格式:

BYTE1 PIN的长度

6个PIN(每个PIN占4个BIT)

FILLER"FFFFFFFFFF"

BYTE2--BYTE4

BYTE5--BYTE8

类型3---BULL

PIN格式:

BYTE1 PIN的长度

6个PIN(每个PIN占4个BIT)

FILLER"FFFFFFFFFF"

BYTE2--BYTE4

BYTE5--BYTE8

按位加主账号

主帐号格式:

BYTE1--BYTE2

BYTE3--BYTE8

%H0000

12个主帐号

类型4---INTERBOLD和IBMATM机

PIN格式:

BYTE1--BYTE4/6

BYTE5/7--BYTE8

4/6个PIN(F9Ebcdic码表示)

FILLER"FF",FILLER可选择

类型5---NCRATM机

卫士通信息产业股份有限公司 /

- 144 -

PIN格式:

BYTE1--BYTE2 4个终端号

产生一个数据密钥(任意长奇校验)和校验码

<0

X

0404>

说明:产生一个随机数,并将它用所请求银行的区域主密钥加密后返回给

请求者。

消息格式:

输入域

命令类型

命令

区域主密钥索引号

加密算法

长度

1

1

2

1

类型

H

H

H

H

备注

0x04

0x04

其他行的共享的区域主密钥

区域主密钥对数据密钥的加密

算法

0:64 BIT, 3DES

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

数据密钥长度

输出域

应答码

数据密钥长度

数据密钥

数据密钥校验码

应答码

错误码

1

长度

1

1

N

8

1

1

H

类型

A

H

H

H

A

H

8/16/24等,必须是8的整数倍

备注

“A”

8/16/24等,必须是8的整数倍

用区域主密钥加密后数据密钥

数据密钥对全零加密的结果

“E”

出错类型

卫士通信息产业股份有限公司 /

- 145 -

SJL05处理过程:

1) 取出索引的区域主密钥ZMK,加密算法和数据密钥长度;

2) 产生指定位数的随机密钥DK;

3) 用区域主密钥ZMK对DK进行3DES加密:

a) 如果加密算法取0 ,用ZMK加密数据密钥(用3DES)

b) 如果加密算法取1 ,用ZMK加密数据密钥(用两次3DES,类似

LMK对MMK的加解密)

c) 如果加密算法取2 ,用ZMK加密数据密钥(用三次3DES,类似

LMK对MMK的加解密)

d) 如果加密算法取其他报错,退出。

4) 得到CKEY;

5) 用随机密钥DK对全零加密:

a) 如果加密算法取0 ,用数据密钥对全零做单DES

b) 如果加密算法取1 ,用数据密钥对全零做3DES

c) 如果加密算法取2 ,用数据密钥对全零做3DES

d) 如果加密算法取其他报错,退出。

6)

返回加密结果CKEY和校验码。

卫士通信息产业股份有限公司 /

- 146 -

用任意长数据密钥加密PIN

BLOCK

<0

X

0405>

说明:可计算PIN的密文和数据密钥的CheckValue。

消息格式:

输入域

命令类型

命令

区域主密钥索引号

加密算法

长度

1

1

2

1

类型

H

H

H

H

备注

0x04

0x05

其他行的共享的区域主密钥

区域主密钥对数据密钥的加密

算法

0:64 BIT, 3DES

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

数据密钥长度

数据密钥

1

N

H

H

8/16/24等,必须是8的整数倍

用区域主密钥索引加密的数据

密钥

数据

输出域

应答码

PIN 密文

应答码

错误码

8

长度

1

8

1

1

H

类型

A

H

A

H

PIN BLOCK

备注

“A”

PIN 密文

“E”

出错类型

卫士通信息产业股份有限公司 /

- 147 -

SJL05处理过程:

1) 取出本地主密钥ZMK索引、数据密钥、加密算法,得到数据密钥明文;

A) 如果加密算法取0 ,用ZMK解密数据密钥(用3DES)

B) 如果加密算法取1 ,用ZMK解密数据密钥(用两次3DES,类似

LMK对ZMK的加解密)

C) 如果加密算法取2 ,用ZMK解密数据密钥(用三次3DES,类似

LMK对ZMK的加解密)

D) 如果加密算法取其他报错,退出。

2) 用数据密钥对8字节的PIN BLOCK进行DES加密,加密结果即为其

PIN密文;

A) 如果加密算法算法指定算法为0,就取数据密钥的前64BIT做单

DES加密;

B) 如果加密算法算法指定算法为1,就取P_PIK的前128BIT做3DES

加密,如果P_PIK只有64BIT,报错返回;

C) 如果加密算法算法指定算法为2,就取P_PIK的192BIT做3DES

加密,如果P_PIK只有64BIT,报错返回;

D) 如果加密算法算法为其他,出错返回。

3) 返回PIN密文。

卫士通信息产业股份有限公司 /

- 148 -

P

IN

B

LOCK

转换(任意长度MMK及格式)

<0

X

0406>

说明:PinBlock转换。

消息格式:

报文域 类型 长

命令码

Index1

PIK1字节长度

PIK1密文

H

H

H

H

2

2

1

N

0x0406

转换前区域主密钥索引

值为8或16或24

N=8或16或24;

转换前区域主密钥加密密文

Index2

PIK2字节长度

PIK2密文

H

H

H

2

1

N

转换后区域主密钥索引

值为8或16或24;

N=8或16或24;

转换后区域主密钥加密密文

转换前H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1格式,1NP..PR...R

0x06:不带主帐号的ANSI9.8格式

转换后H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1格式,1NP..PR...R

0x06:不带主帐号的ANSI9.8格式

卫士通信息产业股份有限公司 /

- 149 -

备注

PINBLOCK格式

PINBLOCK格式

转换前H 8

PINBLOCK

转换前主帐号 A N N=12-19(仅当转换前PINBLOCK

格式为1或4,且转换前和转换后格

式不同时存在)

分隔符

转换后主帐号

A

A

1

N

“;”,仅当存在转换前主帐号时存在

N=12-19(仅当转换后PINBLOCK

格式为1或4,且转换前和转换后格

式不同时存在)

转换后用户补位A

分隔符 A 1

12 仅当转换后格式为2,且转换前和转

换后格式不同时存在。

“;”仅当存在转换后主帐号或补位

码时存在

报文域 类型 长

返回状态码 A 1 ‘A’:正确返回;

‘E’:处理出错。

以下域仅当返回状态码为‘E’时存在

出错代码 H 1 0x01:加密机没有本地主密钥

0x14: PINBLOCK格式无效

0x15:PIN长度无效

0x57:输入无效数据

0x58:输入数据长度不对

以下域仅当返回状态码为‘A’时存在

密文PINBLOCK

SJL05处理过程:

1) 取出指定的区域主密钥ZMK1和数据密钥PIK1;

H 8 指定格式的密文PINBLOCK

备注

卫士通信息产业股份有限公司 /

- 150 -

2) 用ZMK1对PIK1做3DES解密,得到明文密钥PPIK1;

3) 用PPIK1对输入PINBLOCK1做DES或3DES解密,得到明文

PINBLOCK;

4) 根据PINBLOK、转换前格式及相关PAN,计算明文PIN;

5) 根据PIN、转换后格式及相关PAN或用户补位码,得到转换后

PPINBLOCK2;

6) 取出指定的区域主密钥ZMK2和数据密钥PIK2;

7) 用ZMK2对PIK2做3DES解密,得到明文密钥PPIK2;

8) 用PPIK2对PPINBLOCK2做DES或3DES加密,得到密文

PINBLOCK2;

9) 返回PINBLOCK2。

附 1 PIN与主帐号异或方法:

for (i = 2; i < 8; i++) {

PIN[i] ^= (lpKey->Acco2[i - 1] & 0x0f) << 4;

PIN[i] ^= (lpKey->Acco2[i] & 0xf0) >> 4;

}

卫士通信息产业股份有限公司 /

- 151 -

P

IN

B

LOCK

转换<0

X

0407>

说明:PinBlock转换, 自动转换4位和6位密码格式。

消息格式:

报文域 类型 长

命令码

Index1

PIK1字节长度

PIK1密文

H

H

H

H

2

2

1

N

0x0407

转换前区域主密钥索引

值为8或16或24

N=8或16或24;

转换前区域主密钥加密密文

Index2

PIK2字节长度

PIK2密文

H

H

H

2

1

N

转换后区域主密钥索引

值为8或16或24;

N=8或16或24;

转换后区域主密钥加密密文

标志位 A 1 ‘0’:不对PINBLOCK作特殊处理

‘1’:对PINBLOCK作特殊处理

转换前H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1格式,1NP..PR...R

0x06:不带主帐号的ANSI9.8格式

0x07:工行格式PPPPPP)

转换后H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1格式,1NP..PR...R

卫士通信息产业股份有限公司 /

- 152 -

备注

PINBLOCK格式

PINBLOCK格式

0x06:不带主帐号的ANSI9.8格式

0x07:工行格式PPPPPP)

转换前H 8

PINBLOCK

转换前主帐号 A N N=12-19(仅当转换前PINBLOCK

格式为1或4,且转换前和转换后格

式不一样时存在)

分隔符

转换后主帐号

A

A

1

N

“;”,仅当存在转换前主帐号时存在

N=12-19(仅当转换后PINBLOCK

格式为1或4,且转换前和转换后格

式不同时存在)

转换后用户补位A

分隔符 A 1

9 仅当转换后格式为2,且转换前和转

换后格式不同时存在。

“;”仅当存在转换后主帐号或补位

码时存在

报文域 类型 长

返回状态码 A 1 ‘A’:正确返回;

‘E’:处理出错。

以下域仅当返回状态码为‘E’时存在

出错代码 H 1 0x01:加密机没有本地主密钥

0x14: PINBLOCK格式无效

0x15:PIN长度无效

0x6-9-7:输入无效数据

0x58:输入数据长度不对

以下域仅当返回状态码为‘A’时存在

密文PINBLOCK

H 8 指定格式的密文PINBLOCK

备注

卫士通信息产业股份有限公司 /

- 153 -

SJL05处理过程:

1) 取出指定的区域主密钥ZMK1和数据密钥PIK1;

2) 用ZMK1对PIK1做3DES解密,得到明文密钥PPIK1;

3) 用PPIK1对输入PINBLOCK1做DES或3DES解密,得到明文

PINBLOCK;

4) 根据标志位如果是‘0’则不进行特殊处理,如果是‘1’,且符

合6位转4位的条件,就去掉两个0。

5) 根据PINBLOK、转换前格式及相关PAN,计算明文PIN;

6) 根据PIN、转换后格式及相关PAN或用户补位码,得到转换后

PPINBLOCK2;

7) 取出指定的区域主密钥ZMK2和数据密钥PIK2;

8) 用ZMK2对PIK2做3DES解密,得到明文密钥PPIK2;

9) 用PPIK2对PPINBLOCK2做DES或3DES加密,得到密文

PINBLOCK2;

10) 返回PINBLOCK2。

卫士通信息产业股份有限公司 /

- 154 -

用任意长数据密钥解密PIN

BLOCK

<0

X

0408>

(推荐使用0

X

0422)

说明:计算PIN的明文和数据密钥的CheckValue。

消息格式:

输入域

命令类型

命令

区域主密钥索引号

加密算法

长度

1

1

2

1

类型

H

H

H

H

备注

0x04

0x08

其他行的共享的区域主密钥

区域主密钥对数据密钥的加密

算法

0:64 BIT, 3DES

1:128 BIT,3DES

2:192 BIT,3DES

其他保留

数据密钥长度

数据密钥

1

N

H

H

8/16/24等,必须是8的整数倍

用区域主密钥索引加密的数据

密钥

数据

输出域

应答码

PIN 密文

应答码

错误码

SJL05处理过程:

卫士通信息产业股份有限公司 /

- 155 -

8

长度

1

8

1

1

H

类型

A

H

A

H

密文PIN BLOCK

备注

“A”

PIN 明文

“E”

出错类型

1)取出本地主密钥ZMK索引、数据密钥、加密算法,得到数据密钥明文;

A)如果加密算法取0 ,用ZMK解密数据密钥(用3DES)

B)如果加密算法取1 ,用ZMK解密数据密钥(用两次3DES,类似LMK

对ZMK的加解密)

C)如果加密算法取2 ,用ZMK解密数据密钥(用三次3DES,类似LMK

对ZMK的加解密)

D)如果加密算法取其他报错,退出。

2)用数据密钥对8字节的PIN BLOCK进行DES解密,解密结果即为其PIN

明文;

A)如果加密算法算法指定算法为0,就取数据密钥的前64BIT做单DES

加密;

B)如果加密算法算法指定算法为1,就取P_PIK的前128BIT做3DES

加密,如果P_PIK只有64BIT,报错返回;

C)如果加密算法算法指定算法为2,就取P_PIK的192BIT做3DES加

密,如果P_PIK只有64BIT,报错返回;

D)如果加密算法算法为其他,出错返回。

E)返回PIN明文。

卫士通信息产业股份有限公司 /

- 156 -

请求产生MAC(变长MAK)<0

X

0410>

说明:请求产生一个MAC。

消息格式:

输入域

命令

传输主密钥类型

长度

2

1

类型

H

H

备注

0x0410

0x01:为区域主密钥;

0x02:为终端主密钥;

0x00:本地主密钥

传输主密钥索引 2 H 1-1000/100,主密钥类型为本地

主密钥时,此数据项存在但无

实际意义

MAK长度

MAC算法

1

1

H

H

8或16或24

0x01:ANSI9.9

0x02:ANSI9.19

0x03:XOR

MAK

初始向量

MAC数据长度

MAC数据

输出域

应答码

MAC码

应答码

错误码

n

8

2

N

长度

1

8

1

1

H

H

H

H

类型

A

H

A

H

MAK密钥

计算MAC的初使值

计算MAC的数据的字节长度

计算MAC的数据

备注

“A”

“E”

0x0C:非法银行主密钥索引号

0x2E:无效的MAC长度

SJL05处理过程:

卫士通信息产业股份有限公司 /

- 157 -

1) 根据传输主密钥类型和传输主密钥索引读取传输主密钥TMK;

2) 用TMK对MAK做DES_ECB解密,得到明文密钥PMAK;

3) 根据密钥长度和MAC算法标志,对MAC数据做指定算法的MAC

计算;

4) 返回计算结果。

注意:

当MAC算法为ANSI9.19时,必须使用16或24字节长度的密钥。

当MAC算法为XOR且密钥长度大于8字节时,最后一次加密算法采

用3DES算法。

卫士通信息产业股份有限公司 /

- 158 -

请求验证MAC(变长MAK)<0

X

0411>

说明:请求产生一个MAC。

消息格式:

输入域

命令

传输主密钥类型

长度

2

1

类型

H

H

备注

0x0411

0x01:为区域主密钥;

0x02:为终端主密钥;

0x00:为本地主密钥;

传输主密钥索引 2 H 1-1000/100,当主密钥类型为本地

主密钥时,此域存在但无实际意

MAK长度

MAC算法

1

1

H

H

8或16或24

0x01:ANSI9.9

0x02:ANSI9.19

0x03:XOR

MAK N H N=8或16或24,计算MAC的密

初始向量

MAC码

MAC数据长度

MAC数据

输出域

应答码

MAC码

应答码

8

4

2

N

长度

1

8

1

H

H

H

H

类型

A

H

A

计算MAC的初始数据

验证的MAC

计算MAC的数据的字节长度

计算MAC的数据

备注

“A”

“E”

卫士通信息产业股份有限公司 /

- 159 -

错误码 1 H 0x0C:非法银行主密钥索引号

0x2E:无效的MAC长度

SJL05处理过程:

1) 根据传输主密钥类型和传输主密钥索引读取传输主密钥TMK;

2) 用TMK对MAK做DES_ECB解密,得到明文密钥PMAK;

3) 根据密钥长度和MAC算法标志,对MAC数据做指定算法的MAC计算;

4) 比较计算结果与输入MAC,如果一致,正确返回,否则返回MAC校验错。

注意:

当MAC算法为ANSI9.19时,必须使用16或24字节长度的密钥。

当MAC算法为XOR且密钥长度大于8字节时,最后一次加密算法采用3DES

算法。

卫士通信息产业股份有限公司 /

- 160 -

请求产生MAC,并可选转换PIN(密钥长度可变)

<0

X

0412>

说明:计算MAC,并可选择地进行PINBLOCK格式和密钥的转换,PIK和MAK

密钥长度均可变,MAC算法或变。

消息格式:

输入域

命令

转换PIN标志

长度

2

1

类型

H

H

备注

0x0412

0:只计算MAC

1:产生MAC和转换PIN

区域主密钥一索引 2 H MAK的主密钥索引号

0-999为区域主密钥索引;

0xF000-0xF063时低字节表示为

终端主密钥索引;

0xFFFF为本地主密钥索引;

MAK密钥长度 1 H MAK密钥的字节长度,8或16

或24

MAC算法 1 H 0x01:ANSI9.9

0x02:ANSI9.19

0x03:XOR

MAK

初始向量

MAC数据长度

MAC数据

8/16/24 H

8

2

N

H

H

A

用于计算MAC

计算MAC的初始向量

计算MAC的数据的长度

计算MAC的数据,N=LEN

以下域仅当转换PIN标志为1时存在

区域主密钥二索引 H 2 转换前区域主密钥索引

0-999为区域主密钥索引;

卫士通信息产业股份有限公司 /

- 161 -

0xF000-0xF063时低字节为终端

主密钥索引;

0xFFFF为本地主密钥索引;

PIK1字节长度

PIK1密文

H

H

1

N

值为8或16或24

N=8或16或24;

转换前区域主密钥加密密文

区域主密钥三索引 H 2 转换后区域主密钥索引

0-999为区域主密钥索引;

0xF000-0xF063时低字节为终端

主密钥索引;

0xFFFF为本地主密钥索引;

PIK2字节长度

PIK2密文

H

H

1

N

值为8或16或24;

N=8或16或24;

转换后区域主密钥加密密文

转换前PINBLOCK格式 H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1

1NP..PR...R

0x06:不带主帐号的ANSI9.8格

转换后PINBLOCK格式 H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

格式,

卫士通信息产业股份有限公司 /

- 162 -

0x05: ISO9564-1-1

1NP..PR...R

格式,

0x06:不带主帐号的ANSI9.8格

转换前PINBLOCK

转换前主帐号

H

A

8

N

N=12-19(仅当转换前

PINBLOCK格式为1或4,且转

换前和转换后格式不同时存在)

分隔符 A 1 “;”,仅当存在转换前主帐号时

存在

转换后主帐号 A N N=12-19(仅当转换后

PINBLOCK格式为1或4,且转

换前和转换后格式不同时存在)

转换后用户补位码 A 12 仅当转换后格式为2,且转换前

和转换后格式不同时存在。

分隔符 A 1 “;”仅当存在转换后主帐号或补

位码时存在

输出域

应答码

MAC

应答码

MAC

PIN

应答码

长度

1

8

1

8

8

1

类型

A

H

A

H

H

A

备注

“A”

计算的MAC值

“A”

计算的MAC值

用PIK加密的PIN

“E”

卫士通信息产业股份有限公司 /

- 163 -

错误码 1 H 0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错(第

一个银行的MAK)

0x 2E:无效的MAC长度

0x 05:无终端主密钥

0x 2D:MAC验证错误

0x 19: PIK密钥奇偶校验错误

(第一个银行的PIK)

0x 2F:无效的加密PIN或MAC

标志

SJL05处理过程:

1)

2)

根据区域主密钥索引一、MAK长度及输入密文MAK,计算明文MAK;

根据MAC算法、初始向量,用明文MAK对输入MAC数据做指定MAC

计算;

3) 如果需同时进行PINBLOCK转换,则继续以下步骤,否则返回MAC

值,加密机处理结束;

4)

5)

根据区域主密钥索引二、PIK1长度及输入密文PIK1,计算明文PIK1;

根据转换前PINBLOCK格式及相关数据,用明文PIK1解密后得到明文

PIN;

6)

7)

根据区域主密钥索引三、PIK2长度及输入密文PIK2,计算明文PIK2;

根据转换后PINBLOCK格式及相关数据,用明文PIK2加密后得到密文

PINBLOCK;

8)

返回加密结果和MAC数据。

卫士通信息产业股份有限公司 /

- 164 -

请求验证MAC,可选择地验证PIN<变长工作密钥,

任意类型PINBLOCK<0

X

0413>

说明:用MAK验证一个MAC。同时当验证PIN标识为1时,可以验证一个PIN,

MAK密钥和PIK密钥长度可变,MAC计算算法可变。

消息格式:

输入域

命令

转换PIN标志

长度

2

1

类型

H

H

备注

0x0413

0:只验证MAC

1:验证MAC和PIN

区域主密钥一索引 2 H MAK的主密钥索引

0-999为区域主密钥索引;

0xF000-0xF063时低字节为终端

主密钥索引;

0xFFFF为本地主密钥索引;

MAK密钥长度 1 H MAK密钥的字节长度,8或16

或24

MAC算法 1 H 0x01:ANSI9.9

0x02:ANSI9.19

0x03:XOR

MAK

初始向量

MAC

MAC数据长度

MAC数据

8/16/24 H

8

4

2

N

H

H

H

A

用于计算MAC

计算MAC的初始向量

验证的MAC码

计算MAC的数据的长度

计算MAC的数据,N=LEN

以下域仅当验证PIN标志为1时存在

区域主密钥二索引 H 2 转换前区域主密钥索引

0-999为区域主密钥索引;

0xF000-0xF063时低字节为终端

卫士通信息产业股份有限公司 /

- 165 -

主密钥索引;

0xFFFF为本地主密钥索引;

PIK1字节长度

PIK1密文

H

H

1

N

值为8或16或24

N=8或16或24;

加密输入PIN

区域主密钥三索引 H 2 转换前区域主密钥索引

0-999为区域主密钥索引;

0xF000-0xF063时低字节为终端

主密钥索引;

0xFFFF为本地主密钥索引;

PIK2字节长度

PIK2密文

H

H

1

N

值为8或16或24;

N=8或16或24;

加密验证PIN

输入PINBLOCK格式 H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1

1NP..PR...R

0x06:不带主帐号的ANSI9.8格

验证PINBLOCK格式 H 1 0x01:带主帐号的ANSI9.8格式

0x02: Docutel ATM;

0x03: Diebold and IBM ATM,;

0x04: Plus Network;

0x05: ISO9564-1-1

1NP..PR...R

0x06:不带主帐号的ANSI9.8格

格式,

格式,

卫士通信息产业股份有限公司 /

- 166 -

输入PINBLOCK

输入PIN主帐号

H

A

8

N

N=12-19(仅当输入PINBLOCK

格式为1或4时存在)

分隔符 A 1 “;”,仅当存在转换前主帐号时

存在

验证PINBlock

验证PIN主帐号

H

A

8

N

N=12-19(仅当验证PINBLOCK

格式为1或4时存在)

分隔符 A 1 “;”仅当存在转换后主帐号或补

位码时存在

输出域

应答码

应答码

错误码

长度

1

1

1

类型

A

A

H

备注

“A”

“E”

0x 0C:非法银行主密钥索引号

0x 2C:非法银行主密钥

0x 29: MAK密钥奇偶校验错(第

一个银行的MAK)

0x 2E:无效的MAC长度

0x 05:无终端主密钥

0x 2D:MAC验证错误

0x 19: PIK密钥奇偶校验错误

(第一个银行的PIK)

0x 2F:无效的加密PIN或MAC

标志

SJL05处理过程:

卫士通信息产业股份有限公司 /

- 167 -

1) 根据区域主密钥索引一、MAK长度及输入密文MAK,计算明文

MAK;

2) 根据MAC算法、初始向量,用明文MAK对输入MAC数据做指定

MAC计算;

3)

4)

5)

6)

比较计算结果与输入MAC是否一致,不一致则返回MAC验证错。

如果需同时进行PIN验证,则继续以下步骤,否则加密机处理结束;

根据区域主密钥索引二、PIK1长度及输入密文PIK1,计算明文PIK1;

根据输入PINBLOCK格式及相关数据,用明文PIK1解密后得到明

文PIN1;

7)

8)

根据区域主密钥索引三、PIK2长度及输入密文PIK2,计算明文PIK2;

根据验证PINBLOCK格式及相关数据,用明文PIK2解密后得到明

文PIN2;

9) 比较PIN1与PIN2,如果不一致,返回PIN验证错,否则加密机处

理结束正确返回。

卫士通信息产业股份有限公司 /

- 168 -

终端主密钥的生成<0

X

0420>

说明:根据指定的密钥长度生成新密钥,同时生成新密钥的 Check Value 。

消息格式:

输入域

命令

区域主密钥1索引号

区域主密钥2索引号

终端主密钥长度

长度

2

2

2

1

类型

H

H

H

H

备注

0x0420

0:64 BIT

1:128 BIT

2:192 BIT

备注

“A”

由区域主密钥1保护的密文

由区域主密钥2保护的密文

产生的密钥的校验值

“E”

0x02:没有指定的区域主密钥

0x0C:无效的主密钥索引

0x5D:输入长度错

输出域

应答码

终端主密钥密文1

终端主密钥密文2

CheckValue

应答码

错误码

长度

1

8/16/24

8/16/24

8

1

1

类型

A

H

H

H

A

H

SJL05处理过程:

1)生指定长度的随机数;

2)分别用区域主密钥1和区域主密钥2对产生的密钥进行加密;

3)生成产生的密钥的校验值;

4)返回数据。

卫士通信息产业股份有限公司 /

- 169 -

数据密钥的生成<0

X

0421>

说明:一次生成两个随机密钥,并分别用区域主密钥和终端主密钥进行加

密保护。

消息格式:

输入域

命令

区域主密钥1索引号

区域主密钥2索引号

数据密钥1长度

长度

2

2

2

1

类型

H

H

H

H

备注

0x0421

0:64 BIT

1:128 BIT

2:192 BIT

数据密钥2长度

1 H

0:64 BIT

1:128 BIT

2:192 BIT

终端主密钥长度

1 H

0:64 BIT

1:128 BIT

2:192 BIT

终端主密钥密文

输出域

应答码

数据密钥1的密文1

数据密钥1的密文2

CheckValue1

数据密钥2的密文1

数据密钥2的密文2

CheckValue2

应答码

8/16/2

4

长度

1

8/16/2

4

8/16/2

4

8

8/16/2

4

8/16/2

4

8

1

A

H

H

H

类型

A

H

H

由区域主密钥2保护的密钥密

备注

“A”

由区域主密钥1保护的数据密

钥1的密文

由终端主密钥保护的数据密钥

1的密文

数据密钥1的校验值

由区域主密钥1保护的数据密

钥1的密文

由终端主密钥保护的数据密钥

1的密文

数据密钥1的校验值

“E”

卫士通信息产业股份有限公司 /

- 170 -

错误码

1 H

0x02:没有指定的区域主密钥

0x0C:无效的主密钥索引

SJL05处理过程:

1) 产生两个指定长度的随机密钥;

2) 用区域主密钥2解密终端主密钥的密文;

3) 分别用区域主密钥1和终端主密钥对产生的密钥进行加密;

4) 生成产生的密钥的校验值;

5) 返回数据。

卫士通信息产业股份有限公司 /

- 171 -

解密PIN

<0

X

0422>

说明:变长密钥解密PIN,PINBlock格式应符合ANSI9.8。(需要设置“解

密PIN授权”);

消息格式:

输入域

命令

区域主密钥索引号

PINBlock密文

主帐号

PIK长度

长度

2

2

8

8

1

类型

H

H

H

H

H

备注

0x0422

由PIK保护的PINBlock密文

帐号

0x08:64 BIT

0x10:128 BIT

0x18:192 BIT

PIK密文

输出域

应答码

PINBlock明文

应答码

错误码

8/16/2

4

长度

1

8

1

1

类型

A

H

A

H

备注

“A”

不带主帐号的明文PINBlock

“E”

0x0C:无效的区域主密钥索引

SJL05处理过程:

1) 用区域主密钥解密PIK密文;

2) 用PIK解密PINBlock密文;

注意:编写时,应注意校验数据的有效性(即应对PINBlock和主帐号是否

有效进行校验)。

H

由区域主密钥保护的密钥密文

卫士通信息产业股份有限公司 /

- 172 -

生成C

HECK

V

ALUE

(变长密钥)<0

X

0423>

说明:变长密钥的CheckValue的计算。

消息格式:

输入域

命令

主密钥索引号

密钥长度

密钥密文

输出域

应答码

数据密钥的CheckValue

应答码

错误码

长度

2

2

1

8/16/2

4

长度

1

8

1

1

类型

A

H

A

H

备注

“A”

数据密钥的CheckValue

“E”

0x0C:无效的区域主密钥索引

SJL05处理过程:

3) 用区域主密钥解密PIK密文;

4) 用PIK解密PINBlock密文;

注意:编写时,应注意校验数据的有效性(即应对PINBlock和主帐号是否

有效进行校验)。

类型

H

H

H

H

备注

0x0423

数据密钥长度。(8/16/24)

被主密钥保护的数据密钥。

用输入密钥对输入数据作加/解密<0

X

0480>

说明:用输入密钥根据标志对输入数据作DES加密或解密。

用于通联公司pos系统对磁道数据的加解密。

消息格式:

输入域

命令

长度

2

类型

H

备注

0x0480

卫士通信息产业股份有限公司 /

- 173 -

加/解密标志

主密钥索引1

主密钥索引2

主密钥索引3

数据密钥1长度

数据密钥1

数据密钥2长度

数据密钥2

数据密钥3长度

数据密钥3

数据长度1

1

2

2

2

1

8

1

8

1

8

2

A

H

H

H

H

H

H

H

H

H

H

0:加密; 1:解密

主密钥1

主密钥2

主密钥3

8、16、24

用主密钥1加密

8、16、24

用主密钥2加密

8、16、24

用主密钥3加密

如果为解密,必须是8字节整

数备

数据1

数据长度2

L

2

H

H

L=数据长度

如果为解密,必须是8字节整

数备

数据2

数据长度3

L

2

H

H

L=数据长度

如果为解密,必须是8字节整

数备

数据3

输出域

应答码

数据长度1

数据1

数据长度2

数据2

数据长度3

数据3

L

长度

1

2

L

2

L

2

L

H

类型

A

H

H

H

H

H

H

L=数据长度

备注

“A”

L=(输入数据长度+7)/8*8

L=(输入数据长度+7)/8*8

L=(输入数据长度+7)/8*8

卫士通信息产业股份有限公司 /

- 174 -

应答码

错误码

1

1

A

H

“E”

0x0C:非法银行主密钥索引号

0x2f:非法加解密算法标志

0x32:密钥长度错

0x68:数据长度错

SJL05处理过程:

5) 取出指定的主密钥ZMK,用ZMK对输入密钥做3DES解密,

得到密钥明文P_DK;

6) 检查输入数据长度,加密:如果长度不是8的倍数字节,在数

据最后补0x00至长度为8的倍数字节,否则得到数据DATA;

解密:如果数据长度不是8的整数倍,则返回0x68,否则得到

数据DATA

7) 根据加/解密钥标志,用P_DK对DATA做DES(3des)

加密或解密,如果正确,返回最后加/解密数据结果。

用本地主密钥加密终端主密钥<0

X

0510>

说明:输入一个TMK明文,用本地主密钥加密后输出,并存放于主机系

统中。

消息格式:

输入域

命令类型

命令

算法

TMK

输出域

长度

1

1

1

8

长度

类型

H

H

H

H

类型

备注

0x05

0x10

0:DES,其他保留

终端主密钥明文

备注

卫士通信息产业股份有限公司 /

- 175 -

应答码

TMK密文

应答码

错误码

1

8?

1

1

A

H

A

H

“A”

用本地主密钥加密

“E”

0x01:无主机主密钥

0x10:无效的DES算法模式

SJL05处理过程:

1) 取出本地主密钥LMK;

2) 用LMK对TMK做3DES加密,得到密钥密文C_TMK;

3) 如果正确,返回C_TMK。

备注:TMK明文注入到ATM或POS终端后应及时销毁,主机中只保存

TMK的密文。

卫士通信息产业股份有限公司 /

- 176 -

产生成员行的数据密钥(用ZMK和LMK加密)

(<0

X

0511>

说明:加密机产生一个数据密钥,分别用成员行的ZMK和本地主密钥加

密后输出。

消息格式:

输入域

命令类型

命令

算法

ZMK索引

输出域

应答码

数据密钥密文1

数据密钥密文2

数据密钥校验值

应答码

错误码

长度

1

1

1

2

长度

1

8

8

8

1

1

类型

H

H

H

H

类型

A

H

H

H

A

H

0x05

0x11

0:DES,其他保留

成员行ZMK索引,网络字节序

备注

“A”

用成员行ZMK加密

用本地主密钥加密

数据密钥校验值

“E”

0x0C:非法银行主密钥索引号

0x01:无主机主密钥

0x02:无银行主密钥

0x0F:非法ATM类型

SJL05处理过程:

1) 取出本地主密钥LMK和指定的区域主密钥ZMK;

2) 随机生成8字节数据密钥DK;

3) 用ZMK对DK做3DES加密,得到密钥密文一C_DK1;

4) 用LMK对DK做3DES加密,得到密钥密文二C_DK2;

5) 如果正确,返回C_DK1和C_DK2。

卫士通信息产业股份有限公司 /

- 177 -

备注:此命令主要用于金卡中心向成员行分发PIK或MAK,并将PIK和

MAK的密文保存于主机中。

卫士通信息产业股份有限公司 /

- 178 -

产生终端数据密钥(用TMK和LMK加密)<0

X

0512>

说明:加密机产生一个数据密钥,分别用终端主密钥TMK和本地主密钥(LMK)

加密后输出。

消息格式:

输入域

命令类型

命令

算法

长度

1

1

1

类型

H

H

H

备注

0x05

0x12

0x00:TMK为单倍长,产生单倍

长密钥;

0x10:TMK为双倍长,产生单倍

长密钥;

0x11:TMK为双倍长,产生双倍

长的密钥

,其他保留

TMK

输出域

应答码

数据密钥密文1

数据密钥密文2

数据密钥校验值

应答码

错误码

8/16

长度

1

8/16

8/16

8/16

1

1

H

类型

A

H

H

H

A

H

用本地主密钥加密后的密文

备注

“A”

用TMK加密

用本地主密钥加密

数据密钥校验值

“E”

0x01:无主机主密钥

0x0F:非法ATM类型

SJL05处理过程:

1) 取出本地主密钥LMK;

2) 用LMK对输入的TMK解密,得到TMK明文P_TMK;

3) 根据算法标识,随机产生8(或16)字节数据密钥DK;

卫士通信息产业股份有限责任公司 / 第 179页

4) 用P_TMK对DK加密,得到密钥密文一C_DK1;

5) 用LMK对DK加密,得到密钥密文二C_DK2;

6) 如果正确,返回C_DK1和C_DK2。

卫士通信息产业股份有限责任公司 / 第 180页

转换成员行数据密钥(由ZMK转换为LMK加密)

<0

X

0520>

说明:将成员行ZMK加密的数据密钥转换为本地主密钥加密的数据密钥。

消息格式:

输入域

命令类型

命令

算法

成员行ZMK索引

数据密钥密文

输出域

应答码

数据密钥密文

校验值

应答码

错误码

长度

1

1

1

2

8

长度

1

8

8

1

1

类型

H

H

H

H

H

类型

A

H

H

A

H

备注

0x05

0x20

0:DES,其他保留

网络字节序

用ZMK加密后的密文

备注

“A”

用本地主密钥加密

checkvalue

“E”

0x0C:非法银行主密钥索引号

0x01:无主机主密钥

0x02:无银行主密钥

0x0F:非法ATM类型

SJL05处理过程:

1) 取本地主密钥LMK和指定的区域主密钥ZMK;

2) 用ZMK对数据密钥做3DES解密,得到密钥明文P_DK;

3) 用LMK对P_DK做3DES加密,得到密钥密文C_DK;

4) 如果正确,返回用本地主密钥加密的C_DK和校验值。

卫士通信息产业股份有限责任公司 / 第 181页

备注:此命令主要用于成员行接收到金卡中心分发的PIK或MAK后,将其转换

为LMK加密的密钥存放在主机中。对采用ZMK加密存放的,不需要进行转换。

卫士通信息产业股份有限责任公司 / 第 182页

转换成员行数据密钥二(由LMK转换为ZMK加密)

<0

X

0521>

说明:将本地主密钥加密的数据密钥转换为成员行ZMK加密的数据密钥。

消息格式:

输入域

命令类型

命令

算法

成员行ZMK索引

数据密钥密文

输出域

应答码

数据密钥密文

校验值

应答码

错误码

长度

1

1

1

2

8

长度

1

8

8

1

1

类型

H

H

H

H

H

类型

A

H

H

A

H

备注

0x05

0x21

0:DES,其他保留

网络字节序

用ZMK加密后的密文

备注

“A”

用成员行的ZMK加密

checkvalue

“E”

0x0C:非法银行主密钥索引号

0x01:无主机主密钥

0x02:无银行主密钥

0x0F:非法ATM类型

SJL05处理过程:

1) 取出本地主密钥LMK和指定的区域主密钥ZMK;

2) 用LMK对数据密钥做3DES解密,得到密钥明文P_DK;

3) 用ZMK对P_DK做3DES加密,得到密钥密文C_DK;

4) 如果正确,返回C_DK和校验值。

卫士通信息产业股份有限责任公司 / 第 183页

转换终端数据密钥(由TMK转换为LMK加密)

<0

X

0522>

说明:将被终端主密钥TMK加密的数据密钥转换为本地主密钥LMK加密的数

据密钥。

消息格式:

输入域

命令类型

命令

算法

终端主密钥

数据密钥

输出域

应答码

数据密钥密文

应答码

错误码

长度

1

1

1

8

8

长度

1

8

1

1

类型

H

H

H

H

H

类型

A

H

A

H

备注

0x05

0x22

0:DES,其他保留

被本地主密钥加密

被终端主密钥加密

备注

“A”

用本地主密钥加密

“E”

0x01:无主机主密钥

0x0F:非法ATM类型

SJL05处理过程:

1) 取出本地主密钥LMK;

2) 用LMK对终端主密钥密文做3DES解密,得到密钥明文P_TMK;

3) 用P_TMK对输入数据密钥做DES解密,得到密钥明文P_DK;

4) 用LMK对P_DK做3DES加密,得到密钥密文C_DK;

5) 如果正确,返回C_DK。

卫士通信息产业股份有限责任公司 / 第 184页