首页 > 编程语言 >我们常用的地铁卡/银行卡,竟然运行着一个 Java 虚拟机

我们常用的地铁卡/银行卡,竟然运行着一个 Java 虚拟机

时间:2024-08-13 19:05:22浏览次数:13  
标签:NFC 银行卡 虚拟机 Applet Java 读卡器 运行

我们日常使用 NFC 卡可以用来刷地铁,进出门禁,但是你有没有想过,

当我们使用一个 NFC 的 IC 卡刷卡进入地铁的时候,此时系统是如何知道我这个卡上有多少充值余额的?

这个薄薄的 NFC 卡到底有什么魔力,除了可以刷卡进地铁,还可以去银行取钱,进出小区门禁。

今天我在看到一些物联网的知识时,在发现原来这中间的技术原理原来是这么回事

原理

目前我们常见的NFC智能IC卡上,实际是运行着 JavaCard 虚拟机,NFC智能 IC 卡上可以运行由精简后的 Java 语言编写的卡应用(简称 Applet)。

NFC智能 IC 卡的 Applet 不能自己启动,必须由外部终端(例如 POS 机,地铁刷卡终端等)向卡片发送 Select 命令,由此选中卡片中的 Applet,Applet 才能运行。

那么我们基于 Java API,实现了一套JavaCard applet小程序后,如何将该小程序运行在 NFC 上呢。

1、使用智能卡读卡器连接到计算机,并确保读卡器能够识别NFC智能卡。

2、通过个人化工具选择卡上的卡管理应用(通常是Global Platform卡管理应用)。

3、使用个人化工具将CAP文件安装到智能卡上。(我们 Applet 程序打包后是一个 CAP 文件)

此时这个 NFC 卡上就运行着一个小程序了。

但问题又来了。既然这个 NFC 上一直运行着 Java 虚拟机,难道这个 NFC 不需要耗费电源吗?

没有电源,这个 NFC 小程序如何运行?

答案是:还真不用外接电源,通常 NFC 会使用无线感应供电。

NFC智能卡通过无线感应方式从NFC读卡器或NFC设备获取电力。当NFC卡片靠近读卡器时,读卡器产生的交变磁场会在卡片内部的线圈中感应出电流,这个过程称为电磁感应。因此,NFC卡片不需要内置电池,它们通过这种方式获得所需的电力来运行。

真的是太6啦!

标签:NFC,银行卡,虚拟机,Applet,Java,读卡器,运行
From: https://www.cnblogs.com/zh94/p/18357546

相关文章

  • 解密Java中介者模式:代码实例带你深入理解
    1.引言:中介者模式的重要性在软件设计的世界里,模块间的相互依赖往往会导致系统的复杂性和维护难度的增加。中介者模式(MediatorPattern)作为一种行为设计模式,它的出现就是为了解决这一问题。通过引入一个中介者对象,它能够协调各个模块之间的通信,从而实现模块间的解耦,提高系......
  • javase-day06
    aFile_FileDemo01packagecom.se.aFile;/***绝对路径与相对路径的说明:*1.当前工作空间是/home/user/michael/**需求1:访问/home/user/michael/file1.txt*相对路径:file1.txt*绝对路径:/home/user/michael/file1.txt**需求2:访问/home/user/mi......
  • java 读取文件夹文件
    以下是多种不同的Java实现方法来读取文件夹中的文件:方法一:使用File类importjava.io.File;publicclassReadFilesInFolder{publicstaticvoidmain(String[]args){Filefolder=newFile("folderPath");File[]files=folder.listFiles();......
  • Java线程池学习
    Java线程池学习一、线程池基础1定义2优点3基本组件二、Java线程池实现1Executor接口2ExecutorService接口3ThreadPoolExecutor类3.1创建线程池实例三、执行策略1直接提交策略(DirectSubmissionExecutor)2固定线程数策略(FixedThreadPool)3缓存线程池策略......
  • 学习:Java中的内存管理
    在Java中,对对象进行分配和取消分配的过程,称为内存管理。Java通过垃圾收集器(GarbageCollector,GC)实现了自动内存管理,这意味着开发者无需显式地释放对象所占用的内存。Java内存管理分为两个主要部分:JVM(Java虚拟机)内存结构垃圾回收器的工作一、JVM内存结构Java虚......
  • java浅拷贝BeanUtils.copyProperties引发的RPC异常
    背景近期参与了一个攻坚项目,前期因为其他流程原因,测试时间已经耽搁了好几天了,本以为已经解决了卡点,后续流程应该顺顺利利的,没想到人在地铁上,bug从咚咚来~没有任何修改的服务接口,抛出异常:java.lang.ClassCastException:java.util.HashMapcannotbecasttocn.xxx.xxx.xxx.xx......
  • 一个基于 Java 接口参数加密框架,让接口参数加密变得简单、优雅!
    SecurityApiv1.0.1一个基于Java接口参数加密框架,让接口参数加密变得简单、优雅!文章目录一、SecurityApi介绍二、SecurityApi依赖三、使用1.RSA加密(非对称加密)1.1简单示例1.2生成RSA密钥1.3加签名说明「第一个场景」B要给A传递一条加密消息「第二个场景」B......
  • 计算机毕业设计推荐-基于java的地方特色美食分享管理系统
    ......
  • 计算机毕业设计推荐-基于Java的流浪宠物援助平台【源码+文档+PPT】
    精彩专栏推荐订阅:在下方主页......
  • Java解决递归造成的堆栈溢出问题
    在Java中,递归造成的堆栈溢出问题通常是因为递归调用的深度过大,导致调用栈空间不足。解决这类问题的一种常见方法是使用非递归的方式重写算法,即使用迭代替代递归。1.方法一:非递归的方式重写算法(迭代替代递归)下面通过一个典型的递归例子——计算斐波那契数列的第n项,来演示如何用迭......