基于PBOC电子钱包的消费过程详解

本文详细介绍了智能卡在金融行业中电子钱包消费交易的具体流程。从消费初始化到交易完成,包括了密钥生成、MAC计算、余额更新等关键步骤,并解释了如何确保交易的安全性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

智能卡金融行业应用电子钱包的消费交易流程,开发人员可参考

首先终端和卡片有一个共同的密钥叫做消费密钥:PurchKey (针对每种特定的交易,比如,圈存,消费,都有特定的密钥与之对应

假设PurchKey = 11223344556677888877665544332211   (应用密钥一般都是16字节,写在ADF下的Key文件中

在满足安全条件的情况下:

第一步:终端向卡片发送消费初始化命令:

Apdu:     80    50    01    02   0B         01        00001000    001122334455

             CLA   INS   P1    P2    LC   KeyIndex    交易金额       终端机编号 

 

卡片返回15个字节的数据如下(不包括9000):

00000000        0000        000000            01                00       11223344  

卡片余额          交易序号     透支限额          密钥版本号       算法标识    随机数               

 

MAC1的计算过程如下(终端):

1.计算过程密钥:SessionKey  (通信过程都是在建立的会话中进行的,因此为了保证通道的安全性,首先要确定会话密钥,而会话密钥又叫过程密钥是与当次通信的通行环境,对象有关的

InputData =  11223344          0000                      0001  (8bytes)

                      随机数        卡片脱机交易序号         终端交易序号后四位

PurchKey = 11223344556677888877665544332211  (消费密钥)

 

 SessionKey = 3DESEnypt(InputData, PurchKey) = 003238ABC57659DD

                      用PurchKey对InputData 做3DES加密

过程密钥的产生是由消费密钥和当次消费交易的数据(随机数+卡片脱机交易序号+终端交易序号的后4位)通过3DES加密计算得来的

 

2.计算MAC1   (4字节的校验数据

InputData1 = 00001000   06    001122334455  20120229135100

                    交易金额    交易类型      终端机编号      日期时间 

     

SessionKey = 003238ABC57659DD   (本次会话中过程密钥不变

 

 MAC1 = MAC(InputData1  SessionKey )  =  F15CAB75

              用SessionKey对InputData1做MAC运算得到校验数据MAC1

 

第二步:终端向卡片发送消费命令:

 Apdu:  80  54  01  00  0F  00000001  20111221214822  3A845BF0

    CLA   INS   P1    P2   LC  终端交易序号    交易日期时间         MAC1

 

卡片用同样的方法计算MAC1并验证终端发来的MAC1是否正确,从而确认终端是否合法。如果MAC1验证没有通过,卡片会返回MAC错误终止交易。如果MAC1验证通过,进行第三步。

 

第三步:卡片修改余额,脱机交易序号加1并计算MAC2 和TAC,并返回给终端

计算MAC2

InputData2=  00001000                       

交易金额 

     

SessionKey = 003238ABC57659DD

 MAC2 = MAC(InputData2  SessionKey )  =  56988A13

               用SessionKey对InputData2做MAC运算得到校验数据MAC2   

计算TAC

卡片和终端还有一个共同的密钥TAC密钥:TACKey

假设TACKey = 00112233445566778899AABBCCDDEEFF

TACSessionKey=XOR( TacKey.Left(8),TacKey.Right(8)) =8888888888888888

                     TACKey的左右8个字节做异或运算得到Tac的过程密钥。

 

InputData3=00001000    01   001122334455    00000001      20111221    214822                       

                    交易金额  交易类型  终端机编号       终端交易序号      交易日期     交易时间

TAC = MAC(InputData3, TACSessionKey) = 3FF7A28A

 

MAC2和TAC作为消费命令的返回数据返回给终端,消费交易到此就结束了,

TAC作为清算的时候验证交易数据真伪和完整性的重要依据,连同交易记录一同保存在终端。

转载于:https://www.cnblogs.com/ttss/p/4280430.html

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值