Android NFC手机上实现卡模拟

1,  问:能否在AndroidNFC手机上实现卡模拟?

答:在技术上可行,但是,对一般开发人员来讲,目前看来仅仅是技术上可行。

2,  问:具体如何实现呢?

答:有两种方式:一种是基于硬件的,被称为虚拟卡模式(Virual Card Mode);一种是基于软件的,被称为主机卡模式(Host Card Mode)。

在虚拟卡模式下,需要提供安全模块SE,NFC芯片作为非接触通讯前端,将从外部读写器接收到命令,转发到SE,然后由SE进行回复。

外部读写器 <--->  NFC芯片 <---> SE。

而在主机卡模式下,不需要提供SE,而是由在手机中运行的一个应用完成SE的功能。

外部读写器 <--->  NFC芯片 <--->  主机上的应用

3,  问:SE是个什么东西,一般手机上有吗

答:SE可以理解成一个CPU卡,一般是带有JAVA虚拟机的CPU卡,即JAVA卡。带有NFC芯片的手机一般都带有SE(也可能有例外),例如GOOGLE NEXUS手机的PN65N,就是PN544芯片加SmartMX安全模块。此外,SE也可以是特殊的SIM卡或SD卡。

4,  问:我要做基于硬件的卡模拟,如何实现?

答:首先开发在SE中运行的程序,即一个JAVA APPLET,它负责将从NFC芯片接收到命令进行解释,处理和回复。然后,需要开发一个主机应用程序,能够将APPLET下载到SE中,并激活运行。当然,如果是完整的移动支付系统,还要包括后台应用,TSM等

5,  问:SE如何与主机通信?如何才能将程序下载到SE呢

答:根据SE硬件的不同,SE与主机的硬件接口也有所不同。对内置的SE,一般是NFCWI接口,而SIM和SD卡可能是SWP接口。应用接口协议是ISO7816-4,即CPU卡APDU命令。熟悉CPU卡的都知道,没有密钥,根本无法完成对卡的写操作。因此需要SE的操作密钥。但不幸的是,这些密钥都掌握在手机厂商(内置SE的情况),例如三星,HTC,或移动运营商(SIM的情况),或者银行等安全模块提供商(SD卡的情况)手中,一般开发人员是得不到这些权限的。

6,  问:那么没有密钥的情况下,基于硬件能做到什么程度呢?

答:目前看来,对SE进行只读访问应该是可能的。例如在安装GOOGLE钱包后,在SE中会创建GOOGLE钱包的APPLET,我们可以通过程序选择该APPLET并发送一些查询命令。仅此而已…

7,  问:如何实现基于软件的卡模拟?

答:目前,官方Android版本不支持,可以通过刷第三方ROM实现基于软件的卡模拟,例如Cyanogenmod。(具了解,Android4.4 KitKat能支持NFC软件卡模拟,支持ISODEP类型(CPU卡),UID为随机ID,不能在关机和关屏幕下使用,通过AID路由可以与硬件卡模拟应用程序共存。)

8,  问:卡模拟一般能模拟什么卡?

答:取决于软件和硬件双方的限制。一般虚拟卡模拟主要取决于硬件,通常支持TYPE A/B的卡,对于专有协议的卡,就看芯片厂商是否支持了。例如用NXP的芯片,可以方便的模拟M1和ULTRALIGHT等,而是用其它家的芯片就不一定支持了。主机卡模拟一般只支持ISO14443-4以上的卡。

9,  问:基于软件的卡模拟有什么问题吗?

答:主要是安全问题,对应用在移动支付领域的应用,安全总是最重要的,而手机上的运行环境很不安全。

10,问:总体看来,对一般开发人员,有没有实现在android NFC手机上卡模拟,并进行商业化的可能 ?

答:综上所述,主机卡模式存在严重的安全问题,而且在目前官方Android版本不支持的情况下,不可能要求用户刷机以支持一个应用。因此主机卡模式目前只能是一个技术上的研究,而没有商业应用的可能性。对虚拟卡模式,SE掌握在手机厂商,移动运营商或银行等行业巨头手中,根据目前的趋势,一般应用开发者可以采用与这些巨头合作,取得SE的部分使用权,一般是建立一个应用的安全域,以加载自己的虚拟卡。中小应用开发者也可以考虑自己发行基于SD或外置模块的SE,但是自行发卡的成本很高,终端用户一般也不会认可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git的使用记录

GitHub是公有的远程仓库&#xff0c;Gitlab是私有的远程仓库。 git add file git commit -m "add file" git mv filea fileb git log 显示提交记录 git log --oneline 一行的简略信息显示 git log --oneline --decorate 显示当前指针 git reset --ha…

矩阵知识补充

正交矩阵 定义&#xff1a; 正交矩阵是一种满足 A T A E A^{T}AE ATAE的方阵 正交矩阵具有以下几个重要性质&#xff1a; A的逆等于A的转置&#xff0c;即 A − 1 A T A^{-1}A^{T} A−1AT**A的行列式的绝对值等于1&#xff0c;即 ∣ d e t ( A ) ∣ 1 |det(A)|1 ∣det(A)∣…

通用功能——git 攻略

摘要 本文主要介绍git常用命令的使用方法&#xff0c;同时介绍一些常见问题的处理方法&#xff0c;持续更新中… git命令通用选项 大多数git命令都适用的选项列表如下&#xff1a; -v, --verbose show hash and subject, give twice for upstream branch -q, --quie…

Vim 一下日志文件,Java 进程没了?

一次端口告警&#xff0c;发现 java 进程被异常杀掉&#xff0c;而根因竟然是因为在问题机器上 vim 查看了 nginx 日志。下面我将从时间维度详细回顾这次排查&#xff0c;希望读者在遇到相似问题时有些许启发。 时间线 15:19 收到端口异常 odin 告警。 状态:P1故障 名称:应用端…

黑马点评笔记 redis实现优惠卷秒杀

文章目录 难题全局唯一IDRedis实现全局唯一Id 超卖问题问题解决方案乐观锁问题 一人一单 难题 要解决优惠卷秒杀的问题我们要考虑到三个个问题&#xff0c;全局唯一ID&#xff0c;超卖问题&#xff0c;一人一单。 全局唯一ID 用户抢购时&#xff0c;就会生成订单并保存到同一…

【git】pip install git+https://github.com/xxx/xxx替换成本地下载编译安装解决网络超时问题

目录 &#x1f311;&#x1f311; 背景 &#x1f312; &#x1f312;作用 &#x1f314;&#x1f314; 问题 &#x1f314;&#x1f314;解决方案 &#x1f319;方法一 &#x1f319;方法二 &#x1f31d;&#x1f31d;我的解决方案 整理不易&#xff0c;欢迎一键三连…

7-12 统计投票情况(集合)

7-12 统计投票情况&#xff08;集合&#xff09; 分数 10 作者 python课程组 单位 福州大学至诚学院 利用集合分析活动投票情况。 第一小队有五名队员&#xff0c;序号是1,2,3,4,5&#xff1b;第二小队也有五名队员&#xff0c;序号6,7,8,9,10。 输入一个由得票队员编号组成的…

分布式篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、什么是补偿事务?二、消息队列是怎么实现的?三、那你说说Sagas事务模型前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。…

qgis添加postgis数据

左侧浏览器-PostGIS-右键-新建连接 展开-双击即可呈现 可以点击编辑按钮对矢量数据编辑后是直接入库的&#xff0c;因此谨慎使用。

【DQN】基于pytorch的强化学习算法Demo

目录 简介代码 简介 DQN&#xff08;Deep Q-Network&#xff09;是一种基于深度神经网络的强化学习算法&#xff0c;于2013年由DeepMind提出。它的目标是解决具有离散动作空间的强化学习问题&#xff0c;并在多个任务中取得了令人瞩目的表现。 DQN的核心思想是使用深度神经网…

企业数字化转型的作用是什么?_光点科技

在当今快速变化的商业环境中&#xff0c;数字化转型已成为企业发展的重要策略。企业数字化转型指的是利用数字技术改造传统业务模式和管理方式&#xff0c;以提升效率、增强竞争力和创造新的增长机会。 提升运营效率&#xff1a;数字化转型通过引入自动化工具和智能系统&#x…

指数退避重试

指数退避重试&#xff08;Exponential Backoff and Retry&#xff09;是一种网络通信中常用的错误处理和重试策略。它通常用于处理临时性的故障&#xff0c;例如网络延迟、服务器过载或临时性的错误&#xff0c;以提高系统的可靠性和稳定性。 基本思想是&#xff0c;当发生一个…

NX二次开发UF_CSYS_ask_wcs 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_ask_wcs Defined in: uf_csys.h int UF_CSYS_ask_wcs(tag_t * wcs_id ) overview 概述 Gets the object identifier of the coordinate system to which the work coordin…

JMeter压测常见面试问题

1、JMeter可以模拟哪些类型的负载&#xff1f; JMeter可以模拟各种类型的负载&#xff0c;包括但不限于Web应用程序、API、数据库、FTP、SMTP、JMS、SOAP / RESTful Web服务等。这使得JMeter成为一个功能强大且灵活的压力测试工具。 2、如何配置JMeter来进行分布式压力测试&a…

在华为昇腾开发板安装gdal-python

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 在华为昇腾开发板安装gdal-python分为两步:编译gdal库和下载gdal对应的python包。 1.编译gdal库 首先下载gdal库,。在linux(arm架构)上编译的gdal库及其第三方库源码,内含一个编译…

智慧法院 | RPA+AI打造智慧执行助手,解决“案多人少”现实难题

为深化政法智能化建设&#xff0c;加强“智慧治理”“智慧法院”“智慧检务”“智慧警务”“智慧司法”等信息平台建设&#xff0c;深入实施大数据战略&#xff0c;实现科技创新成果同政法工作深度融合。法制日报社于今年3月继续举办了2023政法智能化建设创新案例及论文征集宣传…

Unity UGUI的HorizontalLayoutGroup(水平布局)组件

Horizontal Layout Group | Unity UI | 1.0.0 1. 什么是HorizontalLayoutGroup组件&#xff1f; HorizontalLayoutGroup是Unity UGUI中的一种布局组件&#xff0c;用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小&#xff0c;使它…

Shell脚本:Linux Shell脚本学习指南(第二部分Shell编程)二

第二部分&#xff1a;Shell编程&#xff08;二&#xff09; 十一、Shell数组&#xff1a;Shell数组定义以及获取数组元素 和其他编程语言一样&#xff0c;Shell 也支持数组。数组&#xff08;Array&#xff09;是若干数据的集合&#xff0c;其中的每一份数据都称为元素&#…

Navicat 技术指引 | GaussDB服务器对象的创建/设计(编辑)

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…

【华为OD题库-034】字符串化繁为简-java

题目 给定一个输入字符串&#xff0c;字符串只可能由英文字母(a ~ z、A ~ Z)和左右小括号()组成。当字符里存在小括号时&#xff0c;小括号是成对的&#xff0c;可以有一个或多个小括号对&#xff0c;小括号对不会嵌套&#xff0c;小括号对内可以包含1个或多个英文字母也可以不…