1. 安全要求及报文格式
EVO Cloud Gateway API
  • 网关接入
    • 版本记录
    • 讯联数据网关接口接入指引
      • 安全要求及报文格式
        • 安全要求及报文格式
        • 消息签名
        • 卡信息加密
        • PIN加密
        • 安全要求及报文格式(网联断直连)更新中
        • 消息签名(网联断直连)更新中
      • 线上支付场景
        • 授权
        • 授权完成
        • 再次完成
        • 绑卡
        • 退货
        • 无源退货
        • 撤销
        • 关单
        • 3DS认证
        • Network token 管理
        • 订阅性支付
        • DCC
      • 线下支付场景
        • 支付
        • 预授权
        • 预授权完成
        • 退货
        • 无源退货
        • 撤销
        • 冲正
        • DCC
        • 订阅性支付
      • 附录
        • 应答码
        • 常见问题
        • 万事达卡商户建议代码
    • Online API Specification
      • PaymentMethod
        • PaymentMethod
        • PaymentMethod
        • PaymentMethod
        • PaymentMethod
      • PaymentInstrument
        • PaymentInstrument
        • PaymentInstrument
        • PaymentInstrument
        • PaymentInstrument
      • Payment
        • Payment
        • Payment
        • Payment
      • Cancel
        • Cancel
        • Cancel
      • Capture
        • Capture
        • Capture
      • Refund
        • Refund
        • Refund
      • MerchandiseCredit
        • MerchandiseCredit
        • MerchandiseCredit
      • CancelOrRefund
        • CancelOrRefund
        • CancelOrRefund
      • Cryptogram
        • Cryptogram
        • Cryptogram
      • MultipleCapture
        • MultipleCapture
        • MultipleCapture
      • StandaloneCapture
        • StandaloneCapture
        • StandaloneCapture
      • Recapture
        • Recapture
        • Recapture
      • AsynchronousNotification
        • PaymentMethod 异步通知
        • Payment 异步通知
        • Cancel 异步通知
        • Capture 异步通知
        • Refund 异步通知
        • MerchandiseCredit 异步通知
        • Cryptogram 异步通知
        • MultipleCapture 异步通知
        • StandaloneCapture 异步通知
        • Network Token 更新通知
        • Network Token 认证完成通知
        • Recapture 异步通知
        • PaymentInstrument 异步通知
      • HealthCheck
        • HealthCheck
      • TransactionHistoryInquiry
        • TransactionHistoryInquiry
      • FxRateInquiry
        • FX rate inquiry
        • FX rate inquiry
    • Offline API Specification
      • Payment
        • Payment
        • Payment
      • Cancel
        • Cancel
        • Cancel
      • Capture
        • Capture
        • Capture
      • Refund
        • Refund
        • Refund
      • Reversal
        • Reversal
      • MerchandiseCredit
        • Merchandise Credit
        • Merchandise Credit
      • FxRateInquiry
        • FX rate inquiry
        • FX rate inquiry
      • TipsAdjustment
        • Tips adjustment
        • Tips adjustment
      • StandaloneCapture
        • StandaloneCapture
        • StandaloneCapture
      • MultipleCapture
        • MultipleCapture
        • MultipleCapture
      • ZPK
        • ZPK
      • Notification
        • Payment 异步通知
        • Cancel 异步通知
        • Capture 异步通知
        • Refund 异步通知
        • MerchandiseCredit 异步通知
        • StandaloneCapture 异步通知
        • MultipleCapture 异步通知
  1. 安全要求及报文格式

PIN加密

PIN 加密#

对于线下带密码的卡交易,在传输密码的时候需要对密码进行加密后传输,EVO Cloud 支持 DUKPT 加密算法以及国密 SM4 加密算法。

DUKPT 加密规则#

EVO Cloud 支持使用 DUKPT(ANSI X9.24)加密算法对 PIN 进行加密。

密钥使用规则#

在使用 DUKPT 算法对 PIN 进行加密时,您需要先生成一个 BDK 然后配置在 EVO Cloud 系统中。

第一步:获取 IPEK#

使用 BDK 和 KSN(EC=0)生成 IPEK
假设
BDK 为:0123456789ABCDEFFEDCBA9876543210
KSN 为:FFFF0000000000000000
得到的 IPEK 为:EFE8BA8E0216474AE09DE4DA59111A2E

第二步:计算 PIN Block#

假设
PIN 为:123456
卡号为:4217123412341234
EVO Cloud 使用的 PIN Block 格式为 ANSI X9.8(ISO Format 0),计算流程如下:
1.
用卡号去掉最后一位,从倒数第二位向前取12位,得到:712341234123
2.
在截取后的卡号前补0,补足16位,得到:0000712341234123
3.
用两位密码长度位后拼接密码,再后补F,补足16位,得到:06123456FFFFFFFF
4.
将 0000712341234123、06123456FFFFFFFF 异或得到 PIN Block:06124575BEDCBEDC

第三步:对 PIN Block 进行加密#

使用 IPEK 生成 PEK,然后对第二步中得到的 PIN Block 进行加密。
假设
IPEK 为:EFE8BA8E0216474AE09DE4DA59111A2E
PIN Block 为:06124575BEDCBEDC
KSN 为 FFFF0000000000000003
加密后得到密文为:3A13CFDF77DDB259

第四步:将密文放入请求报文中#

将报文中的 pinEncryptMethod 设置为您使用的签名算法,将 encryptedPin 设置为第三步中计算得到的签名值,将 keySerialNumber 设置为 PEK 对应的 KSN,最终得到最终要发送的报文:
{
    "pin": {
        "encryptedPin": "3A13CFDF77DDB259",
        "keySerialNumber":"FFFF0000000000000003",
        "pinEncryptMethod": "DUKPT"
    }
}

国密加密规则#

EVO Cloud 支持使用 SM4 加密算法对 PIN 进行加密。

密钥使用规则#

在使用国密算法对 PIN 进行加密时,您需要先生成一个 ZMK 然后配置在 EVO Cloud 系统中。然后调用 GET ZPK 接口获取用于加密 PIN 的 ZPK。
提示
1.
每次调用 GET ZPK 接口都会获取一个新的 ZPK,同时上一个 ZPK 还可以在1小时内继续使用。如果再次调用接口获取第三个 ZPK,此时第一个 ZPK 仍然保持1小时的有效期。
2.
通过 GET ZPK 接口获取的 ZPK 是使用 SM4 算法用 ZMK 加密过的 hex 格式的密文,需要解密后使用。
3.
加密过后的 ZPK 密文样例:f826a0355019c1fb828e57a7264ea254
密钥格式
**ZMK明文格式:**32个字符(0-9,A-F),不区分大小写,可机构提供两个分量或CIL提供两个分量,两个分量异或得到ZMK明文,加密全零得到checkvalue,可核对是否一致
**ZPK明文格式:**32个字符(0-9,A-F),不区分大小写,hex格式

第一步:计算 PIN Block#

假设
PIN 为:123456
卡号为:4217123412341234
EVO Cloud 使用的 PIN Block 格式为 ANSI X9.8(ISO Format 0),计算流程如下:
1.
用卡号去掉最后一位,从倒数第二位向前取12位,得到:712341234123
2.
在截取后的卡号前补0,补足32位,得到:00000000000000000000712341234123
3.
用两位密码长度位后拼接密码,再后补F,补足32位,得到:06123456FFFFFFFFFFFFFFFFFFFFFFFF
4.
将 00000000000000000000712341234123、06123456FFFFFFFFFFFFFFFFFFFFFFFF 异或得到 PIN Block:06123456FFFFFFFFFFFF8EDCBEDCBEDC

第二步:对 PIN Block 进行加密#

使用 SM4 算法对第一步中得到的 PIN Block 进行加密
1.
加密算法:ECB
2.
填充模式:pkcs#7
3.
输出格式:Hex
假设
ZPK 明文为:0123456789abcdeffedcba9876543233
加密后得到密文为:3be3ae64b108d29c2a7475022d6d1a4d1e343a0b8e326f7235435a623f362199

第三步:将密文放入请求报文中#

将报文中的 pinEncryptMethod 设置为您使用的签名算法,将 encryptedPin 设置为第二步中计算得到的签名值,最终得到最终要发送的报文:
{
    "pin": {
        "encryptedPin": "3be3ae64b108d29c2a7475022d6d1a4d1e343a0b8e326f7235435a623f362199",
        "pinEncryptMethod": "SM4",
        "checkValue": "6hd43s"
    }
}
提示
如果请求中的 checkValue 不存在,则会报错 B0079 Field: {xxx} value: {xxx} does not exist
上一页
卡信息加密
下一页
安全要求及报文格式(网联断直连)更新中
Built with