web调用IC卡读卡器开发第六章--CPU卡APDU操作

孔明
• 阅读 1902

CPU卡APDU的web操作

CPU卡介绍

CPU卡与M1卡不同, 他不是一种逻辑存储卡,一张空白的CPU卡就类似于一个空白的硬盘, 什么也做不了.CPU卡使用之前必须对CPU卡进行文件系统的创建.就是建立目录和各种类型的文件.

友我科技IC卡读卡器web插件

友我科技IC卡读卡器web插件支持CPU卡的web操作,支持的浏览器有IE,Chrome,Firefox,safari,Opera以及以这些为内核的浏览器,在web上CPU卡的操作分为两种, 一个是CPU卡复位, 一个是发送APDU指令.

CPU卡复位

在CPU卡操作之前必须对CPU卡复位, CPU卡复位的web接口如下:

ACPUReset()

不需要任何参数, 复位后通过回调函数返回复位字符串
回调函数返回结果:

FunctionID=17,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:复位后的返回的16进制字符串
ValData:无

CPU卡APDU操作

CPU卡执行APDU指令,接口如下:

CPUCOS(COSHexString)

参数:COSHexString:要执行的COS指令,16进制字符串。

回调函数返回执行后的结果
回调函数返回结果:

FunctionID=19,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:无
strData:执行COS后的返回的16进制字符串
ValData:执行COS指令返回的状态,10进制显示,如:9000显示为36864

如果多次执行APDU指令, 需要等到上一次apdu执行并在回调函数中返回结果后方可执行下一条,这是可以借助UID参数来区分执行的adpu.

操作例程

如果已经安装了友我科技IC卡读卡器web插件系统,操作CPU卡,执行APDU就非常简单, 我们已取CPU卡随机数为例:
首先还是复位:

function CPUReset()
{
    rfidreader.Repeat=0;
    rfidreader.HaltAfterSuccess=0;
    rfidreader.ACPUReset();
}

回调函数返回结果:

rfidreader.onResult(function(resultdata)
{
    var str;
    switch(resultdata.FunctionID)
    {

        case 17:

        if(resultdata.Result>0)
        {
            Resetstr =resultdata.strData;
        }
        else
        {
            str= "Error";
        }
    
        break;
    
    }
}
);

Resetstr为复位获得复位字符串ATR

然后是执行APDU:

function CPUCos()
{
    rfidreader.Repeat=0;
    rfidreader.HaltAfterSuccess=0;
    rfidreader.CPUCOS("0084000008");//获得8字节随机数    
}

回调函数:

rfidreader.onResult(function(resultdata)
{
    var str;
    switch(resultdata.FunctionID)
    {

        case 19:
        str="COS:";
        if(resultdata.Result>0)
        {
            COSReturn=resultdata.strData;
        }
        else
        {
            str= "Error";
        }
    
        break;        
    }
}
);

COSReturn就是返回的随机数.

参考资料: IC卡读卡器web开发指南.

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
TIDB集群安装部署方案————————上篇
1.   安装TIDB生成环境硬件要求组件CPU内存硬盘类型网络数量(最低要求)TiDB16核48GBSAS万兆网卡(2块最佳)2PD8核16GBSSD万兆网卡(2
不是海碗 不是海碗
2年前
银行卡识别OCR:解放金融业务处理效率的黑科技!
银行卡识别OCR是通过光学字符识别(OCR)技术实现的。它基于深度学习算法,通过卷积神经网络(CNN)对银行卡图片进行特征提取和分析,从而识别出银行卡上的各个字段。
不是海碗 不是海碗
2年前
为什么需要银行卡文字识别API?让我来告诉你!
银行卡文字识别主要是基于卡上的实体信息和识别数据,配合各行业的管理信息技术,对个人银行卡信息的识别和获取进行控制。与手工输入银行卡卡号相比,银行卡OCR识别技术具有准确率高、识别速度快、抗干扰噪声强等特点。
记录一次还算优雅代码设计
本文重点分享商卡聚合服务的代码设计,包括合理的Sirector线程调度(cpu使用率低),和可维护性的设计。简版代码示例如下:git@github.com:changwenbiao/demosoa.git
Stella981 Stella981
3年前
Android入门:使用Android自带媒体库读取MP3文件
今天研究了下如何在Android读取SD卡中的媒体文件(MP3),开始的思路是遍历SD卡所有目录,相信这也是所有开发者第一会想到的思路,无法就是遍历所有文件,将所有后缀名为.mp3读取出来;但是最后发现,如果你对Android稍有了解,你会发现,其实媒体扫描这个工作,Android设置已经替我们干了,Android系统会在SD卡有更新的时候自动将SD卡文件分
Stella981 Stella981
3年前
Linux SD卡建立两个分区
本文主要介绍Linux环境下SD卡建立两个分区的操作流程:操作环境:LinuxUbuntu2016.4操作目的:将SD卡分为两个分区:第一分区格式为FAT32,大小500M。第二个分区为ext4,占剩下的所有空间,用来装Ubuntu的文件系统具体操作如下;一.使用lsblk或者fd
Stella981 Stella981
3年前
Android 性能优化之减少UI过度绘制
什么是过度绘制(OverDraw)在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次。这样就会浪费大量的CPU以及GPU资源。过度绘制最直观的影响就是会导致APP卡顿。还好系统有提供GPU过度绘制调试工具会在屏幕上用不同的颜色,来表明一个像素点位被重复绘制的次数。
不是海碗 不是海碗
2年前
涨知识!细数银行卡三要素 API 的 N 种验证方法
引言银行卡三要素验证API是一种基于姓名、身份证号码和银行卡号等三种信息的验证服务,主要用于绑定银行卡时校验银行卡是否为该身份信息所有、手机号是否为银行卡绑定手机号。银行卡三要素API的验证方法银行卡三要素API的验证原理是通过与银行或银联网络直接连接,向
绣鸾 绣鸾
1年前
iStatistica Pro for Mac(系统活动监控工具)
是一款功能强大的系统监控工具,它能够实时监控CPU、内存、网络和磁盘卡的使用情况,帮助您轻松删除不需要的文件和文件夹,释放电脑内存,提升运行速度。具体来说,iStatisticaMac可以概述电池统计信息,提供有关CPU的实时信息,显示RAM使用情况等。网
燕青 燕青
1年前
Macos专业的系统监控工具:iStatistica for mac
是一款功能强大的系统监测工具,可以实时监测CPU、内存、网络、磁盘卡等系统资源的使用情况,帮助用户轻松管理电脑性能和优化系统运行。具体来说,iStatisticaforMac具备以下特点:系统监控仪表板:实时展示CPU、内存、网络、磁盘卡等系统资源的运行状