在FMCOS CPU卡上建立简单的测试PBOC支付环境

2024-04-12 00:36

本文主要是介绍在FMCOS CPU卡上建立简单的测试PBOC支付环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文目的在于快速搭建一个简易的支付环境,方便进行电子钱包的圈存、消费测试。因此省略了许多数据文件及安全机制。

请勿将这个测试支付环境应用在生产系统中,否则可能带来极大的安全隐患。

建立简易的测试PBOC支付环境

在根目录(3F00)下建立应用目录3F01

80 E0 3F 01 0D 38 08 00 F0 F0 95 FF FF 11 22 33 44 55

选择应用目录3F01

00 A4 00 00 02 3F 01 00  

建立密钥文件

80 E0 00 00 07 3F 01 8F 95 F0 FF FF 

增加外部认证密钥

80 D4 01 00 0D 39 F0 F0 AA FF 11 22 33 44 55 66 77 88 

增加消费密钥

80 D4 01 00 15 3E F0 F0 00 01 3E 3E 3E 3E 3E 3E 3E 3E 11 22 33 44 55 66 77 88 

增加圈存密钥

80 D4 01 00 15 3F F0 F0 00 01 3F 3F 3F 3F 3F 3F 3F 3F 11 22 33 44 55 66 77 88 

增加DTK/TAC密钥

80 D4 01 00 15 34 F0 F0 00 01 34 34 34 34 34 34 34 34 11 22 33 44 55 66 77 88 

增加口令密钥(PIN)

80 D4 01 00 07 3A F0 EF AA FF 12 34 

建立交易记录文件0018

80 E0 00 18 07 2E 0A 17 F0 EF FF FF 

建立电子钱包文件0002

80 E0 00 02 07 2F 02 08 F0 00 FF 18 

简易的测试支付环境就此建立完毕。

对电子钱包进行圈存操作

读余额

Rdr: 80 5C 00 02 04
Tag: 00 00 00 00 [90 00] 命令执行成功 

可见目前余额为0。

验证口令(PIN)

Rdr: 00 20 00 00 02 12 34
Tag: [90 00] 命令执行成功 

对于电子钱包,圈存操作强制验证PIN。 读余额、消费操作可以不验证PIN。

圈存初始化

Rdr: 80 50 00 02 0B 【00】 【00 00 00 10】 【66 66 66 66 66 66】 10
Tag: 【00 00 00 00】 【00 00】 【00】 【01】 【4E 06 65 48】 【0D 39 AD BB】 [90 00] 命令执行成功

读卡器发送的有效数据依次为:圈存密钥标识、交易金额、终端机编号

卡片应答的有效数据依次为:旧余额、联机交易序号、密钥版本、算法标识、随机数、MAC1

过程密钥的计算

将随机数(4E 06 65 48)、联机交易序号(00 00)和填充字节(80 00)组成的完整数据4E 06 65 48 00 00 80 00,使用圈存密钥进行加密,得到“过程密钥”:3B 75 C7 9C FA 8C 23 27

MAC1的计算

将旧余额(00 00 00 00)、交易金额(00 00 00 10)、交易类型(02)和终端机编号(66 66 66 66 66 66)组成的完整数据00 00 00 00 00 00 00 10 02 66 66 66 66 66 66,使用“过程密钥”计算MAC,得到MAC1:0D 39 AD BB。

注:交易类型02表示电子钱包;01则表示电子存折。

圈存

Rdr: 80 52 00 00 0B 【20 24 04 11】 【21 21 21】 【09 7E 98 FE】 04
Tag: 【A8 02 86 3E】 [90 00] 命令执行成功

读卡器发送的有效数据依次为:交易日期、交易时间、MAC2

卡片应答的有效数据为:交易验证码(TAC)

MAC2的计算

将交易金额(00 00 00 10)、交易类型(02)、终端机编号(66 66 66 66 66 66)、交易日期(20 24 04 11)和交易时间(21 21 21)组成的完整数据,00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21,使用“过程密钥”计算MAC,得到MAC2:09 7E 98 FE

交易验证码(TAC)的计算

将新余额(旧余额00 00 00 00 + 交易金额00 00 00 10 = 00 00 00 10)、联机交易序号(00 00)、交易金额(00 00 00 10)、交易类型(02)、终端机编号(66 66 66 66 66 66)、交易日期(20 24 04 11)和交易时间(21 21 21)组成完整数据:00 00 00 10 00 00 00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21。

将DTK/TAC密钥的左右(高低)8字节进行异或,即34 34 34 34 34 34 34 34与11 22 33 44 55 66 77 88进行异或,得到计算TAC使用的密钥:25160770615243BC。用该密钥对前面得到的完整数据(00 00 00 10 00 00 00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21)计算MAC,得到TAC:A8 02 86 3E

再次读余额

Rdr: 80 5C 00 02 04
Tag: 00 00 00 10 [90 00] 命令执行成功

读交易记录

Rdr: 00 B2 01 C4 00
Tag: 00 01 00 00 00 00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21 [90 00] 命令执行成功 

这篇关于在FMCOS CPU卡上建立简单的测试PBOC支付环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/895616

相关文章

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs