命令总结常规命令定义:命令中无数据,且回送为明文的命令Command 功能 回送0x80 关密码键盘 无0x81 请再输入一次密码 实达通用版0x82 请输入密码 实达通用版0x83 关密码键盘 无0x86 请输入密码 明文ESC [ / 1 请输入密码 明文ESC [ / 2 请再输入一次密码 明文ESC [ / 3 关密码键盘 无01H 请再输入一次密码02H 请输入密码03H 关闭密码键盘04H 请再输入一次密码ESC I 请输入密码 实达工行版ESC E 请再输入一次密码ESC M 请输入密码ESC L 请再输入一次密码ESC F ESC I 请输入密码ESC F ESC E 请再输入一次密码ESC G 取数据ESC N ## 设定密码长度ESC D 1 #str CR LF 小键盘回显数据ESC D 2 #str CR LF 小键盘回显数据注意密码长度限制问题加密命令根据不同厂家归类一下几种命令国光系列交行类现介绍如下:1. 命令格式Command 格式:命令字符 命令辅助字符 命令头 命令数据 命令尾注意:以下指令中的数据均为 16 进制数,除指令七外,如果请求数据包和响应数据包中有 ASCII 字符,则 16 进制数 30~39 表示 ASCII 字符‘0’~‘9’ ,十六进制 3A~3F 表示 ASCII 字符‘A’~‘F’ 。
命令介绍:1. 设置 master_key数据包格式:12〔address 〕 〔master_key〕其中 12 为数据包功能号;address 为 master_key 地址,长度为一个字节,范围:0~9;master_key为 16 个字节的 ASCII 字符(明文) 2. 选择 master_key数据包格式:14〔address〕其中 14 为数据包功能号;address 为 master_key 地址,长度为一个字节,范围:0~93. 设置 working_key数据包格式:0D〔working_key 〕其中 0D 为数据包功能号;working_key 为用当前 master_key 加密的密文,为 16 个字节的 ASCII 字符需要与命令 4,11 联合使用4. 接受并且加密 PIN数据包格式:0C〔account〕其中 0C 为数据包功能号;account 为持卡人的 16 为卡号,为 16 个字节的 ASCII 字符 响应数据包格式:〔pin block〕其中 pin biock 为加密后的密文,为 16 个字节的 ASCII 字符需要与命令 3 联合使用5. 接受并且加密 PIN数据包格式:15〔20〕〔working_key 〕 〔account 〕其中 15 为数据包功能号;20 为数据包长度,32 个字节;working_key 为用当前 master_key加密的密文,为 16 个字节的 ASCII 字符;account 为持卡人的 16 为卡号,为 16 个字节的 ASCII 字符。
响应数据包格式:〔pin block〕其中 pin block 为持卡人 PIN 加密后的密文,为 16 个字节的 ASCII 字符6. 设置 mac_key数据包格式:0F〔mac_key 〕其中 0F 为数据包功能号; mac_key 为用当前 master_key 加密的密文,为 16 个字节的 ASCII 字符需要与命令 7,9 联合使用7. 计算 MAC数据包格式:10〔data block len〕〔data block〕其中 10 为数据包功能号;data block len 为 data block 的长度,必须是 16 个字节的倍数;data block为参加 MAC 计算的数据,为 16 个字节倍数的 ASCII 字符响应数据包格式:〔MAC 〕其中 MAC 为 16 个字节的 ASCII 字符需要与命令 6 联合使用8. 计算 MAC数据包格式:16〔packet len〕 〔mac key〕 〔data block〕其中 16 为数据包功能号;packet len 为 data block 的长度+16(mac key 长度),必须是 16 个字节的倍数;mac key 为用当前 mac key 加密的密文,为 16 个字节的 ASCII 字符;data block 为参加 MAC 计算的数据,为 16 个字节倍数的 ASCII 字符。
响应数据包格式:〔MAC 〕其中 MAC 为 16 个字节的 ASCII 字符9. 计算 MAC数据包格式:1D〔data block len〕〔data block〕其中 1D 为数据包功能号:data block len 为 data block 的长度,必须是 8 个字节的倍数;data block 为参加 MAC 计算的数据,为 8 个字节倍数的 BCD 码十六进制数响应数据包格式:〔MAC 〕其中 MAC 为 16 个字节的 ASCII 字符需要与命令 6 联合使用10.计算 MAC数据包格式:1C〔packet len〕 〔mac_key〕 〔data block〕其中 1C 为数据包功能号;packet len 为 data block 的长度+8(mac key 长度) ,必须是 8 个字节的倍数;mac key 为用当前 master_key 加密的密文,为 8 个字节的 BCD 码十六进制数;data block 为参加MAC 计算的数据,为 8 个字节倍数的 BCD 码十六进制数响应数据包格式:〔MAC 〕其中 MAC 为 16 个 字节的 ASCII 字符。
11.修改持卡人 PIN请求数据包格式:0E〔account〕其中 0E 为数据包功能号;account 为持卡人的 16 位卡号,为 16 个字节的 ASCII 字符响应数据包格式:〔old pin block〕 〔new pin block〕其中 old pin block 为持卡人旧 PIN 加密后的密文,为 16 个字节的 ASCII 字符;new pin block 为持卡人新 PIN 加密后的密文,为 16 个字节的 ASCII 字符需要与命令 3 联合使用12.修改持卡人 PIN请求数据包格式:1B〔20〕〔working_key〕 〔account〕其中 1B 为数据包功能号;20 为数据包长度, 32 个字节;working_key 为用当前 master_key 加密的密文,为 16 个字节的 ASCII 字符;account 为持卡人的 16 位卡号,为 16 个字节的 ASCII 字符响应数据包格式:〔old pin block〕 〔new pin block〕其中 old pin block 为持卡人旧 PIN 加密的密文,为 16 个字节的 ASCII 字符,new pin block 为持卡人新 PIN 加密后的密文,为 16 个字节的 ASCII 字符。
13.显示停留在显示屏上,除非下一数据包刷新显示屏请求数据包格式:18〔display line 〕 〔display time〕 〔message len〕〔message〕其中 18 为数据包功能号;display lin 为在显示屏上显示字符串的行号,如果 display lin=01,则在显示屏的第一行显示,如果 display lin=02,则在显示屏的第二行显示; display time 为显示字符串在显示屏上停留的时间,在此数据包中此项参数实际上无用,长度为 1 个字节,0-OFF 均可;message len 为显示字符串 message 长度; message 为显示字符串,在数据包中以 ASCII 表示,长度为 0~F 个字符14.显示停留在显示屏上一定时间后自动刷新,停留时间个控制请求数据包格式:19〔display line〕 〔display time〕 〔message len 〕〔message〕其中 19 为数据包功能号;display line 为在显示屏上显示字符串的行号,如果 display line=01,则在显示屏的第一行显示,如果 display line=02,则在显示屏的第二行显示;display time 为显示字符串在显示屏上停留的时间,长度为 1 个字节,0—OFF 均可,表示显示字符串在显示屏停留 0—FF 秒,之后显示屏自动刷新;message len 为显示字符串 message 长度;message 为显示字符串,在数据包中以 ASCII 表示,长度为 0~F 个字节。
15.在密码键盘上显示固定提示信息请求数据包格式:1A〔display line〕 〔fixed prompt number〕其中 1A 为数据包功能号;display line 为在显示屏上显示固定提示信息的行号,如果 display line=01,则在显示屏的第一行显示,如果 display line=02,则在显示屏的第二行显示;fixed prompt number 为固定提示信息号码,长度为一个字节,其与固定提示信息内容的对应关系如下:0.1. 正在处理中…2. 请输入密码:3. 您的帐户余额为:4. 输入日期:MMDDYY5. 无效密码!6. 请稍候…7. 正在打印…8. 交易成功!9. 成功!A. 请重新输入:B. 请输入有效期:YYMMC. 谢谢您!D. 请确认金额:E. 请确认取款金额:F. 请确认存款金额:10. 请确认消费金额:12. 请确认授权金额:14. 请确认转帐金额:15. 交易失败!16. 正在通讯…17. 系统故障18. 暂停营业19. 欢迎您使用1A. 国光密码键盘1B. 密码键盘1C. 国光1D. 您输入的密码错1E. 请重新输入密码:16.请求密码键盘传输响应数据包请求数据包格式:1E其中 1E 为数据包功能号。
响应数据包格式:[response data block len][response data block]以上有响应数据包的功能,其请求数据包发出后,响应数据包格式如上,其中 response data block len为密码键盘已准备好的 response data block (响应数据包)长度,为十六进制数 12 或者22response data block (响应数据包)格式同以上各功能相应的响应数据包17.请求数据包中加密密钥为经 master_key 加密的密文请求数据包格式:05[packet len][cipher_key][ data block]其中 05 为数据包功能号;packet len 为 data block 的长度+8 (cipher_key 长度) ,必须是 8 个字节的倍数;cipher_key 为用当前 master_key 加密的密文,为 8 个字节的 BCD 码十六进制数;data block 为请求加密的数据块,为 8 个字节倍数的 BCD 码十六进制数响应数据包格式:[encrypted_data_block]其中 encrypted_data_block 为请求数据包中(data block 的长度)×2 个字节的 ASCII 字符。
18.请求数据包中加密密钥为明文请求数据包格式:20[packet len][plain_key][data block] 其中 20 为数据包功能号;packet len 为 data block 的长度+8( plain_key 长度) ,必须是 8 个字节的倍数;plain_key 为加密数据块密钥的明文,为 8 个字节的 BCD 码十六进制数;data block 为请求加密的数据块,为 8 个字节倍数的 BCD 码十六进制数响应数据包格式:[encrypted_data_block] 其中 encrypted_data_block 为请求数据包中(data block 。