在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

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测