我們常用的地鐵卡/銀行卡,竟然執行著一個 Java 虛擬機器

陈咬金發表於2024-08-13

我們日常使用 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啦!

相關文章