一種nfc令牌的工作方法
【專利摘要】本發(fā)明公開了一種NFC令牌的工作方法,屬于信息安全領(lǐng)域。所述方法包括:令牌中的微控制單元進(jìn)行系統(tǒng)初始化,復(fù)位令牌中的近場通信芯片并向近場通信芯片發(fā)送設(shè)置近場通信芯片指令,等待接收設(shè)置近場通信芯片指令返回值,待接收到設(shè)置近場通信芯片指令返回值時發(fā)送第一預(yù)設(shè)指令給近場通信芯片,等待接收第一預(yù)設(shè)指令返回值,待接收到第一預(yù)設(shè)指令返回值時發(fā)送包含動態(tài)口令的第二預(yù)設(shè)指令給近場通信芯片。本發(fā)明的有益效果在于:令牌對移動平臺兼容性好,且使用方便,簡化了用戶的操作流程。
【專利說明】—種NFC令牌的工作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種NFC令牌的工作方法。
【背景技術(shù)】
[0002]在信息安全領(lǐng)域,由于智能手機(jī)等智能終端的快速發(fā)展,作為一種結(jié)合了貨幣電子化與移動通信的嶄新服務(wù),移動銀行業(yè)務(wù)使人們可以在任何時間、任何地點處理多種金融業(yè)務(wù)。為了保證移動銀行業(yè)務(wù)的安全性,各個銀行開始將挑戰(zhàn)應(yīng)答令牌或者耳機(jī)Key等設(shè)備應(yīng)用于移動銀行,但耳機(jī)Key的兼容性較差,而挑戰(zhàn)應(yīng)答令牌雖不存在兼容性的問題,但需要較多的人為干預(yù),使用不方便。
[0003]近場通信(Near Field Communication, NFC),又稱近距離無線通信,是一種短距離的高頻無線通信技術(shù),允許電子設(shè)備之間進(jìn)行非接觸式點對點的數(shù)據(jù)傳輸,由于NFC相比于其他無線通訊技術(shù)具有更好的安全性,因此被認(rèn)為在手機(jī)支付等領(lǐng)域具有很大的應(yīng)用前景。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的缺陷,提出一種NFC令牌的工作方法。
[0005]本發(fā)明方法是通過下述技術(shù)方案實現(xiàn)的:
[0006]一種NFC令牌的工作方法,其基本實施過程如下:
[0007]步驟S1:令牌中的微控制單元進(jìn)行系統(tǒng)初始化;
[0008]步驟S2:所述微控制單元復(fù)位所述令牌中的近場通信芯片;
[0009]步驟S3:所述微控制單元向所述近場通信芯片發(fā)送設(shè)置近場通信芯片指令;
[0010]步驟S4:所述微控制單元等待所述近場通信芯片返回的設(shè)置近場通信芯片指令返回值;
[0011]步驟S5:當(dāng)所述微控制單元讀取到所述近場通信芯片返回的設(shè)置近場通信芯片指令返回值時,發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片;
[0012]步驟S6:所述微控制單元等待所述近場通信芯片返回的第一預(yù)設(shè)指令返回值;
[0013]步驟S7:當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第一預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片;
[0014]所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:所述微控制單元計算生成動態(tài)口令。
[0015]所述步驟S2中還可以包括:
[0016]步驟S2丨:所述微控制單元等待用戶輸入確認(rèn)開始信息,當(dāng)接收到用戶輸入的確認(rèn)開始信息時執(zhí)行步驟S3,否則繼續(xù)等待用戶輸入確認(rèn)開始信息;
[0017]其中,所述步驟S2丨可以具體包括:所述微控制單元檢查按鍵中斷引腳的電平,當(dāng)所述按鍵中斷引腳的電平為高電平時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述按鍵中斷引腳的電平為低電平時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述按鍵中斷引腳的電平;進(jìn)一步地,所述微控制單元發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片之前和/或所述微控制單元發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:檢查所述按鍵中斷引腳的電平,若為高電平則繼續(xù)執(zhí)行,若為低電平則返回步驟S2;
[0018]或者,所述步驟S2'具體包括:所述微控制單元開啟按鍵中斷,檢查開始標(biāo)志,當(dāng)所述開始標(biāo)志置位時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述開始標(biāo)志未置位時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述開始標(biāo)志;相應(yīng)地,所述步驟SI中還包括所述微控制單元初始化按鍵中斷;當(dāng)所述微控制單元接收到按鍵中斷時,檢查所述開始標(biāo)志是否置位,是則退出按鍵中斷,否則將所述開始標(biāo)志置位,退出按鍵中斷;
[0019]或者,所述步驟S2'具體包括:所述微控制單元開啟按鍵中斷,檢查開始標(biāo)志,當(dāng)所述開始標(biāo)志置位時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述開始標(biāo)志未置位時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述開始標(biāo)志;相應(yīng)地,所述步驟SI中還包括所述微控制單元初始化按鍵中斷,并設(shè)置按鍵中斷為上升沿觸發(fā);當(dāng)所述微控制單元接收到按鍵中斷時,檢查所述開始標(biāo)志是否置位,是則退出按鍵中斷,否則將所述開始標(biāo)志置位,并設(shè)置按鍵中斷為下降沿觸發(fā),退出按鍵中斷。
[0020]所述步驟S3中還包括:所述微控制單元設(shè)置所述近場通信芯片的超時時間;
[0021]其中,所述微控制單元設(shè)置所述近場通信芯片的超時時間可以具體包括:所述微控制單元發(fā)送設(shè)置超時時間指令給所述近場通信芯片,所述設(shè)置超時時間指令中包含上電應(yīng)答超時時間和通信超時時間。
[0022]所述步驟S3具體包括:所述微控制單元設(shè)置令牌的序列號,根據(jù)所述令牌的序列號生成配置目標(biāo)設(shè)備指令,發(fā)送所述配置目標(biāo)設(shè)備指令給所述近場通信芯片;相應(yīng)地,所述第一預(yù)設(shè)指令為接收數(shù)據(jù)指令,所述第二預(yù)設(shè)指令為發(fā)送數(shù)據(jù)指令。
[0023]或者,所述步驟S3具體包括:所述微控制單元設(shè)置模擬卡片參數(shù),根據(jù)所述模擬卡片參數(shù)生成配置目標(biāo)設(shè)備指令,發(fā)送所述配置目標(biāo)設(shè)備指令給所述近場通信芯片,所述模擬卡片參數(shù)包括模擬卡片類型和模擬卡片ID ;相應(yīng)地,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的設(shè)置近場通信芯片指令返回值時,所述發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片之前還包括:所述微控制單元發(fā)送第二預(yù)設(shè)指令給所述近場通信芯片,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第二預(yù)設(shè)指令返回值時,發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片;所述第一預(yù)設(shè)指令為獲取數(shù)據(jù)指令,所述第二預(yù)設(shè)指令為回復(fù)發(fā)起者指令。
[0024]或者,所述步驟S3具體包括:所述微控制單元設(shè)置尋卡類型和尋卡速率,根據(jù)所述尋卡類型和尋卡速率生成配置發(fā)起者指令,發(fā)送所述配置發(fā)起者指令給所述近場通信芯片;相應(yīng)地,所述第一預(yù)設(shè)指令和所述第二預(yù)設(shè)指令均為數(shù)據(jù)交換指令。
[0025]所述步驟S4至步驟S7具體包括:
[0026]步驟Al:所述微控制單元等待接收數(shù)據(jù)中斷,當(dāng)所述微控制單元接收到數(shù)據(jù)中斷時執(zhí)行步驟A2 ;
[0027]步驟A2:所述微控制單元讀取所述近場通信芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為所述設(shè)置近場通信芯片指令返回值,則發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片,返回步驟Al,若為所述第一預(yù)設(shè)指令返回值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片;
[0028]相應(yīng)地,所述步驟SI中還包括:初始化數(shù)據(jù)中斷。
[0029]或者,所述步驟S4至步驟S7具體包括:
[0030]步驟B1:所述微控制單元檢查觸發(fā)標(biāo)志,若所述觸發(fā)標(biāo)志未置位,則等待接收數(shù)據(jù)中斷,返回步驟BI,若所述觸發(fā)標(biāo)志置位,則執(zhí)行步驟B2 ;
[0031]當(dāng)所述微控制單元接收到數(shù)據(jù)中斷時,讀取所述近場通信芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為所述設(shè)置近場通信芯片指令返回值,則更新令牌的工作狀態(tài)為第一預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位,若為所述第一預(yù)設(shè)指令返回值,則更新令牌的工作狀態(tài)為第二預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位;
[0032]步驟B2:所述微控制單元將所述觸發(fā)標(biāo)志復(fù)位,檢查令牌的工作狀態(tài),若為第一預(yù)設(shè)狀態(tài)則發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片,返回步驟BI,若為第二預(yù)設(shè)狀態(tài)則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片;
[0033]相應(yīng)地,所述步驟SI中還包括:初始化數(shù)據(jù)中斷;所述步驟S2中還包括:初始化令牌的工作狀態(tài)為初始狀態(tài)。
[0034]或者,所述步驟S4至步驟S7具體包括:
[0035]步驟Cl:所述微控制單元查詢數(shù)據(jù)中斷引腳的電平,當(dāng)所述數(shù)據(jù)中斷引腳的電平為高電平時執(zhí)行步驟C2 ;
[0036]步驟C2:所述微控制單元讀取所述近場通信芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為所述近場通信芯片指令返回值,則發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片,返回步驟Cl,若為所述第一預(yù)設(shè)指令返回值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片;
[0037]相應(yīng)地,所述步驟SI中還包括:初始化數(shù)據(jù)中斷。
[0038]所述計算生成動態(tài)口令之前還包括:所述微控制單元提示用戶輸入確認(rèn)生成口令信息,并判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息,是則計算生成動態(tài)口令,否則返回步驟S2 ;
[0039]其中,所述判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息具體包括:所述微控制單元檢查按鍵中斷引腳的電平,并判斷在第一預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖剑莿t在第一預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)生成口令信息,否則在第一預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)生成口令信息;
[0040]或者,所述判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息具體包括:所述微控制單元等待接收按鍵中斷,并判斷在第一預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則在第一預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)生成口令信息,否則在第一預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)生成口令信息;相應(yīng)地,所述步驟Si中還包括:初始化按鍵中斷。
[0041]當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第一預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:所述微控制單元提示用戶輸入確認(rèn)發(fā)送口令信息,并判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息,是則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片,否則返回步驟S2;
[0042]其中,所述判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息具體包括:所述微控制單元檢查按鍵中斷引腳的電平,并判斷在第二預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖剑莿t在第二預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)發(fā)送口令信息,否則在第二預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)發(fā)送口令信息;
[0043]或者,所述判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息具體包括:所述微控制單元等待接收按鍵中斷,并判斷在第二預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則在第二預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)發(fā)送口令信息,否則在第二預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)發(fā)送口令信息,相應(yīng)地,所述步驟Si中還包括:初始化按鍵中斷。
[0044]所述計算生成動態(tài)口令具體包括:根據(jù)預(yù)置的密鑰和事件因子計算生成動態(tài)口令;
[0045]或者,所述計算生成動態(tài)口令具體包括:根據(jù)所述挑戰(zhàn)值、預(yù)置的密鑰和事件因子計算生成動態(tài)口令;相應(yīng)地,所述計算生成動態(tài)口令之前還包括:從所述近場通信芯片返回的第一預(yù)設(shè)指令返回值中獲取挑戰(zhàn)值,并顯示所述挑戰(zhàn)值;
[0046]或者,所述計算生成動態(tài)口令具體包括:根據(jù)所述挑戰(zhàn)值以及預(yù)置的密鑰、事件因子和時間因子計算生成動態(tài)口令;相應(yīng)地,所述計算生成動態(tài)口令之前還包括:從所述近場通信芯片返回的第一預(yù)設(shè)指令返回值中獲取挑戰(zhàn)值,并顯示所述挑戰(zhàn)值;
[0047]或者,所述計算生成動態(tài)口令具體包括:根據(jù)預(yù)置的密鑰和時間因子計算生成動態(tài)口令;
[0048]或者,所述計算生成動態(tài)口令具體包括:根據(jù)所述挑戰(zhàn)值、預(yù)置的密鑰和時間因子計算生成動態(tài)口令;相應(yīng)地,所述計算生成動態(tài)口令之前還包括:從所述近場通信芯片返回的第一預(yù)設(shè)指令返回值中獲取挑戰(zhàn)值,并顯示所述挑戰(zhàn)值。
[0049]所述步驟S7之后還包括:所述微控制單元等待所述近場通信芯片返回的第二預(yù)設(shè)指令返回值,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第二預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片;
[0050]當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第一預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:檢查所述第一預(yù)設(shè)指令返回值中的狀態(tài)參數(shù),若所述狀態(tài)參數(shù)為預(yù)設(shè)值,則返回步驟S2,若所述狀態(tài)參數(shù)不為預(yù)設(shè)值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片;
[0051]當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第二預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:檢查所述第二預(yù)設(shè)指令返回值中的狀態(tài)參數(shù),若所述狀態(tài)參數(shù)為預(yù)設(shè)值,則返回步驟S2,若所述狀態(tài)參數(shù)不為預(yù)設(shè)值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片。
[0052]本發(fā)明方法的有益效果在于,本發(fā)明提供的令牌對移動平臺具有良好的兼容性,并且本發(fā)明提供的令牌在使用時,減少了用戶的手動操作,簡化了用戶的操作流程。
【專利附圖】
【附圖說明】
[0053]為了更清楚的說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0054]圖1為本發(fā)明實施例一中提供的一種NFC令牌的工作方法的流程圖;
[0055]圖2為本發(fā)明實施例二中提供的一種NFC令牌的工作方法的流程圖;
[0056]圖3為本發(fā)明實施例三中提供的一種NFC令牌的工作方法的流程圖;
[0057]圖4為本發(fā)明實施例四中提供的一種NFC令牌的工作方法的流程圖;
[0058]圖5為本發(fā)明實施例五中提供的一種NFC令牌的工作方法的流程圖;
[0059]圖6為本發(fā)明實施例六中提供的一種NFC令牌的工作方法的流程圖;
[0060]圖7為本發(fā)明實施例七中提供的一種NFC令牌的工作方法的流程圖。
【具體實施方式】
[0061]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0062]本發(fā)明提供的NFC令牌為支持NFC的設(shè)備,可以在主動或被動模式下與其他支持NFC的設(shè)備交換數(shù)據(jù)。
[0063]實施例一
[0064]本發(fā)明實施例一提供一種NFC令牌的工作方法,所述令牌中包括MCU (MicroControl Unit,微控制單兀)和NFC (Near Field Communication,近場通信)芯片。參見圖1,所述令牌的工作方法具體包括:
[0065]步驟S1:令牌中的MCU進(jìn)行系統(tǒng)初始化;
[0066]步驟S2:所述MCU復(fù)位所述令牌中的NFC芯片;
[0067]步驟S3:所述MCU向所述NFC芯片發(fā)送設(shè)置NFC芯片指令;
[0068]本實施例中,步驟S3中還可以包括:步驟S3 ;:所述MCU設(shè)置所述NFC芯片的超時時間;
[0069]步驟S3 ’具體包括:所述MCU發(fā)送設(shè)置超時時間指令給所述NFC芯片,所述設(shè)置超時時間指令中包含上電應(yīng)答超時時間和通信超時時間。
[0070]步驟S4:所述MCU等待所述NFC芯片返回的設(shè)置NFC芯片指令返回值;
[0071]步驟S5:當(dāng)所述MCU讀取到所述NFC芯片返回的設(shè)置NFC芯片指令返回值時,發(fā)送第一預(yù)設(shè)指令給所述NFC芯片;
[0072]步驟S6:所述MCU等待所述NFC芯片返回的第一預(yù)設(shè)指令返回值;
[0073]步驟S7:當(dāng)所述MCU讀取到所述NFC芯片返回的第一預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片;
[0074]本實施例中,當(dāng)所述MCU讀取到所述NFC芯片返回的第一預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片之前還包括:檢查所述第一預(yù)設(shè)指令返回值中的狀態(tài)參數(shù),若所述狀態(tài)參數(shù)為預(yù)設(shè)值,則返回步驟S2,若所述狀態(tài)參數(shù)不為預(yù)設(shè)值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片;
[0075]所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片之前還包括:所述MCU計算生成動態(tài)口令。
[0076]本實施例中,步驟S2中還可以包括:步驟S2 ’:所述MCU等待用戶輸入確認(rèn)開始信息,當(dāng)接收到用戶輸入的確認(rèn)開始信息時執(zhí)行步驟S3,否則繼續(xù)等待用戶輸入確認(rèn)開始
信息;
[0077]步驟S2 ’具體包括:所述MCU檢查按鍵中斷引腳的電平,當(dāng)所述按鍵中斷引腳的電平為高電平時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述按鍵中斷引腳的電平為低電平時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述按鍵中斷引腳的電平;
[0078]相應(yīng)地,所述MCU發(fā)送第一預(yù)設(shè)指令給所述NFC芯片之前和/或所述MCU發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片之前還可以包括:檢查所述按鍵中斷引腳的電平,若為高電平則繼續(xù)執(zhí)行,若為低電平則返回步驟S2 ;
[0079]或者,步驟S2'具體包括:所述MCU開啟按鍵中斷,檢查開始標(biāo)志,當(dāng)所述開始標(biāo)志置位時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述開始標(biāo)志未置位時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述開始標(biāo)志;
[0080]相應(yīng)地,所述步驟SI中還包括所述MCU初始化按鍵中斷;并且當(dāng)所述MCU接收到按鍵中斷時,檢查所述開始標(biāo)志是否置位,是則退出按鍵中斷,否則將所述開始標(biāo)志置位,退出按鍵中斷;
[0081]或者,步驟S2'具體包括:所述MCU開啟按鍵中斷,檢查開始標(biāo)志,當(dāng)所述開始標(biāo)志置位時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述開始標(biāo)志未置位時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述開始標(biāo)志;
[0082]相應(yīng)地,所述步驟SI中還包括所述MCU初始化按鍵中斷,并設(shè)置按鍵中斷為上升沿觸發(fā);并且當(dāng)所述MCU接收到按鍵中斷時,檢查所述開始標(biāo)志是否置位,是則退出按鍵中斷,否則將所述開始標(biāo)志置位,并設(shè)置按鍵中斷為下降沿觸發(fā),退出按鍵中斷。
[0083]本實施例中,計算生成動態(tài)口令之前還可以包括:
[0084]步驟30:所述MCU提示用戶輸入確認(rèn)生成口令信息;
[0085]步驟40:所述MCU判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息,是則計算生成動態(tài)口令,否則返回步驟S2。
[0086]步驟40具體包括:所述MCU檢查按鍵中斷引腳的電平,并判斷在第一預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則在第一預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)生成口令信息,否則在第一預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)生成口令信息;
[0087]或者,步驟40具體包括:所述MCU等待接收按鍵中斷,并判斷在第一預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則在第一預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)生成口令信息,否則在第一預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)生成口令信息;
[0088]相應(yīng)地,所述步驟SI中還包括:初始化按鍵中斷。
[0089]本實施例中,當(dāng)所述MCU讀取到所述NFC芯片返回的第一預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片之前還可以包括:
[0090]步驟50:所述MCU提示用戶輸入確認(rèn)發(fā)送口令信息;
[0091]步驟60:所述MCU判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息,是則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片,否則返回S2。
[0092]步驟60具體包括:所述MCU檢查按鍵中斷引腳的電平,并判斷在第二預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則在第二預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)發(fā)送口令信息,否則在第二預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)發(fā)送口令信息;
[0093]或者,步驟60具體包括:所述MCU等待接收按鍵中斷,并判斷在第二預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則在第二預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)發(fā)送口令信息,否則在第二預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)發(fā)送口令信息;
[0094]相應(yīng)地,所述步驟SI中還包括:初始化按鍵中斷。
[0095]本實施例中,步驟S7之后還可以包括:所述MCU等待所述NFC芯片返回的第二預(yù)設(shè)指令返回值,當(dāng)所述MCU讀取到所述NFC芯片返回的第二預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片;
[0096]進(jìn)一步地,當(dāng)所述MCU讀取到所述NFC芯片返回的第二預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片之前還包括:檢查所述第二預(yù)設(shè)指令返回值中的狀態(tài)參數(shù),若所述狀態(tài)參數(shù)為預(yù)設(shè)值,則返回步驟S2,若所述狀態(tài)參數(shù)不為預(yù)設(shè)值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述NFC芯片。
[0097]實施例二
[0098]本發(fā)明實施例二提供一種NFC令牌的工作方法,所述令牌中包括MCU和NFC芯片,所述令牌在主動模式下作為目標(biāo)設(shè)備與發(fā)起者進(jìn)行通信。參見圖2,所述令牌的工作方法具體包括令牌的MCU執(zhí)行以下步驟:
[0099]步驟101:進(jìn)行系統(tǒng)初始化;
[0100]步驟102:復(fù)位NFC芯片;
[0101]具體地,本實施例中,復(fù)位NFC芯片包括:MCU控制其MCU_SPI_RST引腳輸出低電平,延時預(yù)設(shè)時間后,控制其MCU_SPI_RST引腳輸出高電平;
[0102]優(yōu)選地,本實施例中,步驟102之前還可以包括:檢查電池電量,且當(dāng)電池電量低于預(yù)設(shè)電量時提示電量過低;具體地,可以通過屏幕顯示電量過低和/或通過變換指示燈顏色提示電量過低和/或通過蜂鳴提示電量過低和/或通過語音提示電量過低。
[0103]步驟103:設(shè)置NFC芯片的超時時間;
[0104]具體地,本實施例中,設(shè)置NFC芯片的超時時間包括:MCU發(fā)送設(shè)置超時時間指令給NFC芯片,超時時間指令中包括上電應(yīng)答超時時間和通信超時時間;
[0105]優(yōu)選地,本實施例中,設(shè)置超時時間指令為Cfqlten參數(shù)為0x02的RFConfiguration 指令。
[0106]步驟104:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的設(shè)置超時時間應(yīng)答,是則繼續(xù)執(zhí)行步驟105,否則通信失敗,返回步驟102 ;
[0107]步驟105:根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功,是則執(zhí)行步驟106,否則通信失敗,返回步驟102 ;
[0108]具體地,本實施例中,根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功包括:判斷接收到的設(shè)置超時時間應(yīng)答的預(yù)設(shè)字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)字符串,是則設(shè)置NFC芯片的超時時間成功,否則設(shè)置NFC芯片的超時時間失敗;
[0109]優(yōu)選地,本實施例中,判斷接收到的設(shè)置超時時間應(yīng)答的前三個字節(jié)上的數(shù)據(jù)是否為 Ox 00 OOFF。
[0110]步驟106:設(shè)置NFC芯片為主動模式的目標(biāo)形態(tài),設(shè)置并發(fā)送令牌的序列號給NFC
-H-* I I
心片;[0111]具體地,本實施例中,步驟106包括:設(shè)置令牌序列號,并根據(jù)設(shè)置的令牌序列號生成配置目標(biāo)設(shè)備指令,發(fā)送生成的配置目標(biāo)設(shè)備指令給NFC芯片;
[0112]優(yōu)選地,本實施例中,令牌序列號為10個字節(jié)的數(shù)據(jù),配置目標(biāo)設(shè)備指令為Mode參數(shù)為 0x02 的 TgInitAsTarget 指令。
[0113]步驟107:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則繼續(xù)執(zhí)行步驟108,否則通信失敗,返回步驟102 ;
[0114]步驟108:判斷是否有NFC芯片的返回數(shù)據(jù),是則執(zhí)行步驟109,否則返回步驟108 ;
[0115]本實施例中,步驟108具體包括:等待數(shù)據(jù)中斷,當(dāng)接收到數(shù)據(jù)中斷時執(zhí)行步驟109,否則繼續(xù)等待數(shù)據(jù)中斷;
[0116]或者,本實施例中,步驟108具體包括:查詢數(shù)據(jù)中斷引腳的電平,當(dāng)數(shù)據(jù)中斷引腳的電平為高電平時執(zhí)行步驟109,否則繼續(xù)查詢數(shù)據(jù)中斷引腳的電平。
[0117]步驟109:讀取NFC芯片的返回數(shù)據(jù),并檢查讀取到的數(shù)據(jù),若為設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值則執(zhí)行步驟110,若為獲取數(shù)據(jù)請求的返回值則執(zhí)行步驟113 ;
[0118]本實施例中,設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值具體為配置目標(biāo)設(shè)備指令的應(yīng)答;獲取數(shù)據(jù)請求的返回值具體為接收數(shù)據(jù)指令的應(yīng)答;
[0119]優(yōu)選地,本實施例中,配置目標(biāo)設(shè)備指令為Mode參數(shù)為0x02的TgInitAsTarget指令,接收數(shù)據(jù)指令為TgGetData指令。
[0120]步驟110:檢查設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟102,否則執(zhí)行步驟111 ;
[0121]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0122]步驟111:發(fā)送獲取數(shù)據(jù)請求給NFC芯片;
[0123]本實施例中,步驟111具體包括:生成并發(fā)送接收數(shù)據(jù)指令給NFC芯片;
[0124]優(yōu)選地,本實施例中,接收數(shù)據(jù)指令為TgGetData指令。
[0125]步驟112:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟108,否則通信失敗,返回步驟102 ;
[0126]步驟113:檢查獲取數(shù)據(jù)請求的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟102,否則執(zhí)行步驟114 ;
[0127]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0128]步驟114:發(fā)送動態(tài)口令給NFC芯片;
[0129]本實施例中,步驟114具體包括:生成并發(fā)送包含動態(tài)口令的發(fā)送數(shù)據(jù)指令給NFC
-H-* LL
心片;
[0130]優(yōu)選地,本實施例中,發(fā)送數(shù)據(jù)指令為TgSetData指令。
[0131]本實施例中,步驟114之前還包括:計算生成動態(tài)口令;
[0132]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0133]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)令牌中預(yù)置的密鑰和所述事件因子計算生成動態(tài)口令;[0134]進(jìn)一步地,本實施例中,當(dāng)MCU讀取到NFC芯片返回的獲取數(shù)據(jù)請求的返回值時,還包括從獲取數(shù)據(jù)請求的返回值中獲取挑戰(zhàn)值,并顯示挑戰(zhàn)值;
[0135]相應(yīng)地,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0136]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰以及所述事件因子計算生成動態(tài)口令。
[0137]更進(jìn)一步地,本實施例中,步驟101中還可以包括:開啟定時器中斷,并設(shè)置定時器中斷的中斷優(yōu)先級最高;
[0138]相應(yīng)地,在本實施例中,當(dāng)MCU接收到定時器中斷時,更新令牌中預(yù)置的時間因子;
[0139]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令。
[0140]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令;
[0141]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、事件因子和所述時間因子計算生成動態(tài)口令,并更新所述事件因子;
[0142]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、所述時間因子以及所述事件因子計算生成動態(tài)口令。
[0143]本實施例中,計算生成動態(tài)口令之前還可以包括:提示用戶輸入確認(rèn)生成口令信息,檢查按鍵中斷引腳的電平,并判斷在第一預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則計算生成動態(tài)口令,否則返回步驟102 ;或者包括:提示用戶輸入確認(rèn)生成口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則計算生成動態(tài)口令,否則返回步驟102。
[0144]本實施例中,步驟114之前還可以包括:提示用戶輸入確認(rèn)發(fā)送口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則執(zhí)行步驟114,否則返回步驟102 ;或者包括:提示用戶輸入確認(rèn)發(fā)送口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則執(zhí)行步驟114,否則返回步驟102。
[0145]步驟115:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則通信成功,返回步驟102,否則通信失敗,返回步驟102。
[0146]進(jìn)一步地,本實施例中,步驟109中還可以包括:若讀取到的數(shù)據(jù)為發(fā)送動態(tài)口令的返回值則檢查發(fā)送動態(tài)口令的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟102,否則執(zhí)行步驟114 ;本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0147]相應(yīng)地,步驟115替換為,判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟108,否則通信失敗,返回步驟102。
[0148]實施例三
[0149]本發(fā)明實施例三提供一種NFC令牌的工作方法,所述令牌在主動模式下作為目標(biāo)設(shè)備與發(fā)起者進(jìn)行通信。參見圖3,所述令牌的工作方法具體包括令牌的MCU執(zhí)行以下步驟:[0150]步驟201:進(jìn)行系統(tǒng)初始化;
[0151]步驟202:復(fù)位NFC芯片,設(shè)置令牌的工作狀態(tài)為初始狀態(tài),并復(fù)位觸發(fā)標(biāo)志;
[0152]具體地,本實施例中,復(fù)位NFC芯片包括:MCU控制其MCU_SPI_RST引腳輸出低電平,延時預(yù)設(shè)時間后,控制其MCU_SPI_RST引腳輸出高電平;
[0153]優(yōu)選地,本實施例中,步驟202之前還可以包括:檢查電池電量,且當(dāng)電池電量低于預(yù)設(shè)電量時提示電量過低;具體地,可以通過屏幕顯示電量過低和/或通過變換指示燈顏色提示電量過低和/或通過蜂鳴提示電量過低和/或通過語音提示電量過低。
[0154]步驟203:設(shè)置NFC芯片的超時時間;
[0155]具體地,本實施例中,設(shè)置NFC芯片的超時時間包括:MCU發(fā)送設(shè)置超時時間指令給NFC芯片,超時時間指令中包括上電應(yīng)答超時時間和通信超時時間;
[0156]優(yōu)選地,本實施例中,設(shè)置超時時間指令為Cfqlten參數(shù)為0x02的RFConfiguration 指令。
[0157]步驟204:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的設(shè)置超時時間應(yīng)答,是則繼續(xù)執(zhí)行步驟205,否則通信失敗,返回步驟202 ;
[0158]步驟205:根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功,是則執(zhí)行步驟206,否則通信失敗,返回步驟202 ;
[0159]具體地,本實施例中,根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功包括:判斷接收到的設(shè)置超時時間應(yīng)答的預(yù)設(shè)字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)字符串,是則設(shè)置NFC芯片的超時時間成功,否則設(shè)置NFC芯片的超時時間失??;
[0160]優(yōu)選地,本實施例中,判斷接收到的設(shè)置超時時間應(yīng)答的前三個字節(jié)上的數(shù)據(jù)是否為 Ox 00 OOFF。
[0161]步驟206:設(shè)置NFC芯片為主動模式的目標(biāo)形態(tài),設(shè)置并發(fā)送令牌的序列號給NFC
-H-* I I
心片;
[0162]具體地,本實施例中,步驟206包括:設(shè)置令牌序列號,并根據(jù)設(shè)置的令牌序列號生成配置目標(biāo)設(shè)備指令,并發(fā)送給NFC芯片;
[0163]優(yōu)選地,本實施例中,令牌序列號為10個字節(jié)的數(shù)據(jù),配置目標(biāo)設(shè)備指令為Mode參數(shù)為 0x02 的 TgInitAsTarget 指令。
[0164]步驟207:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則繼續(xù)執(zhí)行步驟208,否則通信失敗,返回步驟202 ;
[0165]步驟208:檢查觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟210,否則執(zhí)行步驟209 ;
[0166]步驟209:等待接收數(shù)據(jù)中斷,返回步驟208 ;
[0167]本實施例中,當(dāng)MCU接收到數(shù)據(jù)中斷時,讀取NFC芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為設(shè)置所述NFC芯片的工作模式、形態(tài)和令牌參數(shù)的返回值,則更新令牌的工作狀態(tài)為第一預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位,若為獲取數(shù)據(jù)請求的返回值,則更新令牌的工作狀態(tài)為第二預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位;
[0168]步驟210:檢查令牌的工作狀態(tài),若為第一預(yù)設(shè)狀態(tài)則執(zhí)行步驟211,若為第二預(yù)設(shè)狀態(tài)則執(zhí)行步驟214 ;
[0169]步驟211:將觸發(fā)標(biāo)志復(fù)位,檢查讀取到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟202,否則執(zhí)行步驟212 ;[0170]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0171]步驟212:發(fā)送獲取數(shù)據(jù)請求給NFC芯片;
[0172]本實施例中,步驟212具體包括:生成并發(fā)送接收數(shù)據(jù)指令給NFC芯片;
[0173]優(yōu)選地,本實施例中,接收數(shù)據(jù)指令為TgGetData指令。
[0174]步驟213:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟208,否則通信失敗,返回步驟202 ;
[0175]步驟214:將觸發(fā)標(biāo)志復(fù)位,檢查接收到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟202,否則執(zhí)行步驟215 ;
[0176]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0177]步驟215:發(fā)送動態(tài)口令給NFC芯片;
[0178]本實施例中,步驟215具體包括:生成并發(fā)送包含動態(tài)口令的發(fā)送數(shù)據(jù)指令給NFC
-H-* I I
心片;
[0179]優(yōu)選地,本實施例中,發(fā)送數(shù)據(jù)指令為:TgSetData指令。
[0180]本實施例中,步驟215之前還包括:計算生成動態(tài)口令;
[0181]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0182]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)令牌中預(yù)置的密鑰和所述事件因子計算生成動態(tài)口令;
[0183]進(jìn)一步地,本實施例中,當(dāng)MCU讀取到NFC芯片返回的獲取數(shù)據(jù)請求的返回值時,還包括從獲取數(shù)據(jù)請求的返回值中獲取挑戰(zhàn)值;
[0184]相應(yīng)地,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0185]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰以及所述事件因子計算生成動態(tài)口令。
[0186]更進(jìn)一步地,本實施例中,步驟201中還可以包括:開啟定時器中斷,并設(shè)置定時器中斷的中斷優(yōu)先級最高;
[0187]相應(yīng)地,在本實施例中,當(dāng)MCU接收到定時器中斷時,更新令牌中預(yù)置的時間因子;
[0188]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令。
[0189]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令;
[0190]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、事件因子和所述時間因子計算生成動態(tài)口令,并更新所述事件因子;
[0191]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、所述時間因子以及所述事件因子計算生成動態(tài)口令。
[0192]本實施例中,計算生成動態(tài)口令之前還可以包括:提示用戶輸入確認(rèn)生成口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則計算生成動態(tài)口令,否則返回步驟202 ;或者包括:提示用戶輸入確認(rèn)生成口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則計算生成動態(tài)口令,否則返回步驟202。
[0193]本實施例中,步驟215之前還可以包括:提示用戶輸入確認(rèn)發(fā)送口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則執(zhí)行步驟215,否則返回步驟202 ;或者包括:提示用戶輸入確認(rèn)發(fā)送口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則執(zhí)行步驟215,否則返回步驟202。
[0194]步驟216:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則通信成功,返回步驟202,否則通信失敗,返回步驟202。
[0195]進(jìn)一步地,本實施例中,當(dāng)MCU接收到數(shù)據(jù)中斷時,還可以包括,若讀取到的數(shù)據(jù)為發(fā)送動態(tài)口令的返回值,則將所述觸發(fā)標(biāo)志置位;
[0196]相應(yīng)地,步驟216替換為:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟208,否則通信失敗,返回步驟202。
[0197]實施例四
[0198]本發(fā)明實施例四提供一種NFC令牌的工作方法,所述令牌在被動模式下作為目標(biāo)設(shè)備與發(fā)起者進(jìn)行通信。參見圖4,所述令牌的工作方法具體包括令牌的MCU執(zhí)行以下步驟:
[0199]步驟301:進(jìn)行系統(tǒng)初始化;
[0200]步驟302:復(fù)位NFC芯片;
[0201]具體地,本實施例中,復(fù)位NFC芯片包括:MCU控制其MCU_SPI_RST引腳輸出低電平,延時預(yù)設(shè)時間后,控制其MCU_SPI_RST引腳輸出高電平;
[0202]優(yōu)選地,本實施例中,步驟302之前還可以包括:檢查電池電量,且當(dāng)電池電量低于預(yù)設(shè)電量時提示電量過低;具體地,可以通過屏幕顯示電量過低和/或通過變換指示燈顏色提示電量過低和/或通過蜂鳴提示電量過低和/或通過語音提示電量過低。
[0203]步驟303:設(shè)置NFC芯片的超時時間;
[0204]具體地,本實施例中,設(shè)置NFC芯片的超時時間包括:MCU發(fā)送設(shè)置超時時間指令給NFC芯片,超時時間指令中包括上電應(yīng)答超時時間和通信超時時間;
[0205]優(yōu)選地,本實施例中,設(shè)置超時時間指令為Cfqlten參數(shù)為0x02的RFConfiguration 指令。
[0206]步驟304:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的設(shè)置超時時間應(yīng)答,是則繼續(xù)執(zhí)行步驟305,否則通信失敗,返回步驟302 ;
[0207]步驟305:根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功,是則執(zhí)行步驟306,否則通信失敗,返回步驟302 ;
[0208]具體地,本實施例中,根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功包括:判斷接收到的設(shè)置超時時間應(yīng)答的預(yù)設(shè)字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)字符串,是則設(shè)置NFC芯片的超時時間成功,否則設(shè)置NFC芯片的超時時間失敗;
[0209]優(yōu)選地,本實施例中,判斷接收到的設(shè)置超時時間應(yīng)答的前三個字節(jié)上的數(shù)據(jù)是否為 Ox 00 OOFF。
[0210]步驟306:設(shè)置NFC芯片為被動模式的目標(biāo)形態(tài),設(shè)置并發(fā)送模擬卡片參數(shù)給NFC
-H-* I I
心片;[0211]具體地,本實施例中,步驟306包括:設(shè)置模擬卡片參數(shù),并根據(jù)設(shè)置的模擬卡片參數(shù)生成配置目標(biāo)設(shè)備指令,發(fā)送配置目標(biāo)設(shè)備指令給NFC芯片;
[0212]優(yōu)選地,本實施例中,配置目標(biāo)設(shè)備指令為Mode參數(shù)為0x04的TgInitAsTarget指令,模擬卡片參數(shù)包括模擬卡片類型和模擬卡片ID,模擬卡片類型如Felica卡、Mifare
下寸ο
[0213]步驟307:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則繼續(xù)執(zhí)行步驟308,否則通信失敗,返回步驟302 ;
[0214]步驟308:判斷是否有NFC芯片的返回數(shù)據(jù),是則執(zhí)行步驟309,否則返回步驟308 ;
[0215]本實施例中,步驟308具體包括:等待數(shù)據(jù)中斷,當(dāng)接收到數(shù)據(jù)中斷時執(zhí)行步驟309,否則繼續(xù)等待數(shù)據(jù)中斷;
[0216]或者,本實施例中,步驟308具體包括:查詢數(shù)據(jù)中斷引腳的電平,當(dāng)數(shù)據(jù)中斷引腳的電平為高電平時執(zhí)行步驟309,否則繼續(xù)查詢數(shù)據(jù)中斷引腳的電平。
[0217]步驟309:讀取NFC芯片的返回數(shù)據(jù),并檢查讀取到的數(shù)據(jù),若為設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值則執(zhí)行步驟310,若為發(fā)送令牌參數(shù)的返回值則執(zhí)行步驟313 ;若為獲取數(shù)據(jù)請求的返回值則執(zhí)行步驟316 ;
[0218]本實施例中,設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值具體為配置目標(biāo)設(shè)備指令的應(yīng)答;發(fā)送令牌參數(shù)的返回值具體為包含令牌參數(shù)的回復(fù)發(fā)起者指令的應(yīng)答;獲取數(shù)據(jù)請求的返回值具體為獲取數(shù)據(jù)指令的應(yīng)答;
[0219]優(yōu)選地,本實施例中,配置目標(biāo)設(shè)備指令為Mode參數(shù)為0x04的TgInitAsTarget指令;回復(fù)發(fā)起者指令為TgResponseToInitiator指令;獲取數(shù)據(jù)指令為TgGetInitiator指令。
[0220]步驟310:檢查設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟302,否則執(zhí)行步驟311 ;
[0221 ] 本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0222]步驟311:發(fā)送令牌參數(shù)給NFC芯片;
[0223]本實施例中,步驟311具體包括:生成并發(fā)送包含令牌參數(shù)的回復(fù)發(fā)起者指令給NFC芯片;
[0224]優(yōu)選地,本實施例中,回復(fù)發(fā)起者指令為TgResponseToInitiator指令。
[0225]步驟312:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟308,否則通信失敗,返回步驟302 ;
[0226]步驟313:檢查發(fā)送令牌參數(shù)的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟302,否則執(zhí)行步驟314 ;
[0227]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0228]步驟314:發(fā)送獲取數(shù)據(jù)請求給NFC芯片;
[0229]本實施例中,步驟314具體包括:生成并發(fā)送獲取數(shù)據(jù)指令給NFC芯片;
[0230]優(yōu)選地,本實施例中,獲取數(shù)據(jù)指令為TgGetInitiator指令。
[0231]步驟315:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟308,否則通信失敗,返回步驟302 ;[0232]步驟316:檢查獲取數(shù)據(jù)請求的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟302,否則執(zhí)行步驟317 ;
[0233]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0234]步驟317:發(fā)送動態(tài)口令給NFC芯片;
[0235]本實施例中,步驟317具體包括:生成并發(fā)送包含動態(tài)口令的回復(fù)發(fā)起者指令給NFC芯片;
[0236]優(yōu)選地,本實施例中,回復(fù)發(fā)起者指令為TgResponseToInitiator指令;
[0237]本實施例中,步驟317之前還包括:計算生成動態(tài)口令;
[0238]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0239]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)令牌中預(yù)置的密鑰和所述事件因子計算生成動態(tài)口令;
[0240]進(jìn)一步地,本實施例中,當(dāng)MCU讀取到NFC芯片返回的獲取數(shù)據(jù)請求的返回值時,還包括從獲取數(shù)據(jù)請求的返回值中獲取挑戰(zhàn)值;
[0241]相應(yīng)地,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0242]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰以及所述事件因子計算生成動態(tài)口令。
[0243]更進(jìn)一步地,本實施例中,步驟301中還可以包括:開啟定時器中斷,并設(shè)置定時器中斷的中斷優(yōu)先級最高;
[0244]相應(yīng)地,在本實施例中,當(dāng)MCU接收到定時器中斷時,更新令牌中預(yù)置的時間因子;
[0245]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令。
[0246]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令;
[0247]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、事件因子和所述時間因子計算生成動態(tài)口令,并更新所述事件因子;
[0248]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、所述時間因子以及所述事件因子計算生成動態(tài)口令。
[0249]本實施例中,計算生成動態(tài)口令之前還可以包括:提示用戶輸入確認(rèn)生成口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖剑莿t計算生成動態(tài)口令,否則返回步驟302 ;或者包括:提示用戶輸入確認(rèn)生成口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則計算生成動態(tài)口令,否則返回步驟302。
[0250]本實施例中,步驟317之前還可以包括:提示用戶輸入確認(rèn)發(fā)送口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則執(zhí)行步驟317,否則返回步驟302 ;或者包括:提示用戶輸入確認(rèn)發(fā)送口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則執(zhí)行步驟317,否則返回步驟302。[0251]步驟318:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則通信成功,返回步驟302,否則通信失敗,返回步驟302。
[0252]進(jìn)一步地,本實施例中,步驟309中還可以包括:若讀取到的數(shù)據(jù)為發(fā)送動態(tài)口令的返回值則檢查發(fā)送動態(tài)口令的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟302,否則執(zhí)行步驟317 ;
[0253]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0254]相應(yīng)地,步驟318替換為,判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟308,否則通信失敗,返回步驟302。
[0255]實施例五
[0256]本發(fā)明實施例五提供一種NFC令牌的工作方法,所述令牌在被動模式下作為目標(biāo)設(shè)備與發(fā)起者進(jìn)行通信。參見圖5,所述令牌的工作方法具體包括令牌的MCU執(zhí)行以下步驟:
[0257]步驟401:進(jìn)行系統(tǒng)初始化;
[0258]步驟402:復(fù)位NFC芯片,設(shè)置令牌的工作狀態(tài)為初始狀態(tài),并復(fù)位觸發(fā)標(biāo)志;
[0259]具體地,本實施例中,復(fù)位NFC芯片包括:MCU控制其MCU_SPI_RST引腳輸出低電平,延時預(yù)設(shè)時間后,控制其MCU_SPI_RST引腳輸出高電平;
[0260]優(yōu)選地,本實施例中,步驟402之前還可以包括:檢查電池電量,且當(dāng)電池電量低于預(yù)設(shè)電量時提示電量過低;具體地,可以通過屏幕顯示電量過低和/或通過變換指示燈顏色提示電量過低和/或通過蜂鳴提示電量過低和/或通過語音提示電量過低。
[0261]步驟403:設(shè)置NFC芯片的超時時間;
[0262]具體地,本實施例中,設(shè)置NFC芯片的超時時間包括:MCU發(fā)送設(shè)置超時時間指令給NFC芯片,超時時間指令中包括上電應(yīng)答超時時間和通信超時時間;
[0263]優(yōu)選地,本實施例中,設(shè)置超時時間指令為Cfqlten參數(shù)為0x02的RFConfiguration 指令。
[0264]步驟404:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的設(shè)置超時時間應(yīng)答,是則繼續(xù)執(zhí)行步驟405,否則通信失敗,返回步驟402 ;
[0265]步驟405:根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功,是則執(zhí)行步驟406,否則通信失敗,返回步驟402 ;
[0266]具體地,本實施例中,根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功包括:判斷接收到的設(shè)置超時時間應(yīng)答的預(yù)設(shè)字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)字符串,是則設(shè)置NFC芯片的超時時間成功,否則設(shè)置NFC芯片的超時時間失??;
[0267]優(yōu)選地,本實施例中,判斷接收到的設(shè)置超時時間應(yīng)答的前三個字節(jié)上的數(shù)據(jù)是否為 Ox 00 OOFF。
[0268]步驟406:設(shè)置NFC芯片為被動模式的目標(biāo)形態(tài),設(shè)置并發(fā)送模擬卡片參數(shù)給NFC
-H-* I I
心片;
[0269]具體地,本實施例中,步驟406包括:設(shè)置模擬卡片參數(shù),并根據(jù)設(shè)置的模擬卡片參數(shù)生成配置目標(biāo)設(shè)備指令,并發(fā)送給NFC芯片;
[0270]優(yōu)選地,本實施例中,配置目標(biāo)設(shè)備指令為Mode參數(shù)為0x04的TgInitAsTarget指令,模擬卡片參數(shù)包括模擬卡片類型和模擬卡片ID,模擬卡片類型如Felica卡、Mifare下寸O
[0271]步驟407:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則繼續(xù)執(zhí)行步驟408,否則通信失敗,返回步驟402 ;
[0272]步驟408:檢查觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟410,否則執(zhí)行步驟409 ;
[0273]步驟409:等待接收數(shù)據(jù)中斷,返回步驟408 ;
[0274]本實施例中,當(dāng)MCU接收到數(shù)據(jù)中斷時,讀取NFC芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為設(shè)置所述NFC芯片的工作模式、形態(tài)和令牌參數(shù)的返回值,則更新令牌的工作狀態(tài)為第三預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位,若為發(fā)送令牌參數(shù)的返回值,則更新令牌的工作狀態(tài)為第一預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位,若為獲取數(shù)據(jù)請求的返回值,則更新令牌的工作狀態(tài)為第二預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位;
[0275]本實施例中,設(shè)置所述NFC芯片的工作模式、形態(tài)和令牌參數(shù)的返回值具體為配置目標(biāo)設(shè)備指令的應(yīng)答,發(fā)送令牌參數(shù)的返回值具體為包含令牌參數(shù)的回復(fù)發(fā)起者指令的應(yīng)答,獲取數(shù)據(jù)請求的返回值具體為獲取數(shù)據(jù)指令的應(yīng)答;
[0276]優(yōu)選地,本實施例中,配置目標(biāo)設(shè)備指令為TgInitAsTarget指令,回復(fù)發(fā)起者指令為TgResponseToInitiator指令,獲取數(shù)據(jù)請求的返回值為TgGetInitiator指令的應(yīng)答。
[0277]步驟410:檢查令牌的工作狀態(tài),若為第三預(yù)設(shè)狀態(tài)則執(zhí)行步驟411,若為第一預(yù)設(shè)狀態(tài)則執(zhí)行步驟414,若為第二預(yù)設(shè)狀態(tài)則執(zhí)行步驟417 ;
[0278]步驟411:將觸發(fā)標(biāo)志復(fù)位,檢查接收到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟402,否則執(zhí)行步驟412 ;
[0279]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0280]步驟412:發(fā)送令牌參數(shù)給NFC芯片;
[0281]本實施例中,步驟412具體包括:生成并發(fā)送包含令牌參數(shù)的回復(fù)發(fā)起者指令給NFC芯片;
[0282]優(yōu)選地,本實施例中,回復(fù)發(fā)起者指令為TgResponseToInitiator指令。
[0283]步驟413:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟408,否則通信失敗,返回步驟402 ;
[0284]步驟414:將觸發(fā)標(biāo)志復(fù)位,檢查接收到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟402,否則執(zhí)行步驟415 ;
[0285]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0286]步驟415:發(fā)送獲取數(shù)據(jù)請求給NFC芯片;
[0287]本實施例中,步驟415具體包括:生成并發(fā)送獲取數(shù)據(jù)指令給NFC芯片;
[0288]優(yōu)選地,本實施例中,獲取數(shù)據(jù)指令為TgGetInitiator指令
[0289]步驟416:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟408,否則通信失敗,返回步驟402 ;
[0290]步驟417:將觸發(fā)標(biāo)志復(fù)位,檢查接收到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟402,否則執(zhí)行步驟418 ;
[0291]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0292]步驟418:發(fā)送動態(tài)口令給NFC芯片;[0293]本實施例中,步驟418具體包括:生成并發(fā)送包含動態(tài)口令的回復(fù)發(fā)起者指令給NFC芯片;
[0294]優(yōu)選地,本實施例中,回復(fù)發(fā)起者指令為TgResponseToInitiator指令;
[0295]本實施例中,步驟418之前還包括:計算生成動態(tài)口令;
[0296]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0297]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)令牌中預(yù)置的密鑰和所述事件因子計算生成動態(tài)口令;
[0298]進(jìn)一步地,本實施例中,當(dāng)MCU讀取到NFC芯片返回的獲取數(shù)據(jù)請求的返回值時,還包括從獲取數(shù)據(jù)請求的返回值中獲取挑戰(zhàn)值;
[0299]相應(yīng)地,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0300]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰以及所述事件因子計算生成動態(tài)口令。
[0301]更進(jìn)一步地,本實施例中,步驟401中還可以包括:開啟定時器中斷,并設(shè)置定時器中斷的中斷優(yōu)先級最高;
[0302]相應(yīng)地,在本實施例中,當(dāng)MCU接收到定時器中斷時,更新令牌中預(yù)置的時間因子;
[0303]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令。
[0304]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令;
[0305]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、事件因子和所述時間因子計算生成動態(tài)口令,并更新所述事件因子;
[0306]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、所述時間因子以及所述事件因子計算生成動態(tài)口令。
[0307]本實施例中,計算生成動態(tài)口令之前還可以包括:提示用戶輸入確認(rèn)生成口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則計算生成動態(tài)口令,否則返回步驟402 ;或者包括:提示用戶輸入確認(rèn)生成口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則計算生成動態(tài)口令,否則返回步驟402。
[0308]本實施例中,步驟418之前還可以包括:提示用戶輸入確認(rèn)發(fā)送口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則執(zhí)行步驟418,否則返回步驟402 ;或者包括:提示用戶輸入確認(rèn)發(fā)送口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則執(zhí)行步驟418,否則返回步驟402。
[0309]步驟419:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則通信成功,返回步驟402,否則通信失敗,返回步驟402。
[0310]進(jìn)一步地,本實施例中,當(dāng)MCU接收到數(shù)據(jù)中斷時還可以包括:若讀取到的數(shù)據(jù)為發(fā)送動態(tài)口令的返回值,則將所述觸發(fā)標(biāo)志置位;[0311]相應(yīng)地,步驟419替換為,判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟408,否則通信失敗,返回步驟402。
[0312]實施例六
[0313]本發(fā)明實施例六提供一種NFC令牌的工作方法,所述令牌在被動模式下作為發(fā)起者與目標(biāo)設(shè)備進(jìn)行通信。參見圖6,所述令牌的工作方法具體包括令牌的MCU執(zhí)行以下步驟:
[0314]步驟501:進(jìn)行系統(tǒng)初始化;
[0315]步驟502:復(fù)位NFC芯片;
[0316]具體地,本實施例中,復(fù)位NFC芯片包括:MCU控制其MCU_SPI_RST引腳輸出低電平,延時預(yù)設(shè)時間后,控制其MCU_SPI_RST引腳輸出高電平;
[0317]優(yōu)選地,本實施例中,步驟502之前還可以包括:檢查電池電量,且當(dāng)電池電量低于預(yù)設(shè)電量時提示電量過低;具體地,可以通過屏幕顯示電量過低和/或通過變換指示燈顏色提示電量過低和/或通過蜂鳴提示電量過低和/或通過語音提示電量過低。
[0318]步驟503:設(shè)置NFC芯片的超時時間;
[0319]具體地,本實施例中,設(shè)置NFC芯片的超時時間包括:MCU發(fā)送設(shè)置超時時間指令給NFC芯片,超時時間指令中包括上電應(yīng)答超時時間和通信超時時間;
[0320]優(yōu)選地,本實施例中,設(shè)置超時時間指令為Cfqlten參數(shù)為0x02的RFConfiguration 指令。
[0321]步驟504:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的設(shè)置超時時間應(yīng)答,是則繼續(xù)執(zhí)行步驟505,否則通信失敗,返回步驟502 ;
[0322]步驟505:根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功,是則執(zhí)行步驟506,否則通信失敗,返回步驟502 ;
[0323]具體地,本實施例中,根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功包括:判斷接收到的設(shè)置超時時間應(yīng)答的預(yù)設(shè)字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)字符串,是則設(shè)置NFC芯片的超時時間成功,否則設(shè)置NFC芯片的超時時間失?。?br>
[0324]優(yōu)選地,本實施例中,判斷接收到的設(shè)置超時時間應(yīng)答的前三個字節(jié)上的數(shù)據(jù)是否為 Ox 00 OOFF。
[0325]步驟506:設(shè)置NFC芯片為被動模式的發(fā)起者形態(tài),設(shè)置并發(fā)送要尋的卡片的類型和速率給NFC芯片;
[0326]具體地,本實施例中,步驟506包括:初始化配置發(fā)起者指令,設(shè)置要尋的卡片的類型和速率,根據(jù)要尋的卡片的類型和速率設(shè)置發(fā)起者指令中的尋卡參數(shù),發(fā)送配置發(fā)起者指令給NFC芯片;
[0327]優(yōu)選地,本實施例中,配置發(fā)起者指令為InLisPassiveTarget指令,步驟506包括:初始化InLisPassiveTarget指令,設(shè)置要尋的卡片的類型和速率,根據(jù)要尋的卡片的類型和速率設(shè)置InLisPassiveTarget指令的BrTy參數(shù),發(fā)送InLisPassiveTarget指令給NFC芯片;
[0328]例如,如果設(shè)置的要尋的卡片的類型和速率分別為符合IS0/IEC14443協(xié)議的A型卡和 106kbps,則設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x00 ;
[0329]如果設(shè)置的要尋的卡片的類型和速率分別為FeliCa polling卡和212kbps,貝Ij設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 OxOl ;
[0330]如果設(shè)置的要尋的卡片的類型和速率分別為FeliCa polling卡和424kbps,貝Ij設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x02 ;
[0331]如果設(shè)置的要尋的卡片的類型和速率分別為符合IS0/IEC14443-3協(xié)議的B型卡和 106kbps,則設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x03 ;
[0332]如果設(shè)置的要尋的卡片的類型和速率分別為Innovision Jewel tag卡和106kbps,則設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x04。
[0333]步驟507:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則繼續(xù)執(zhí)行步驟508,否則通信失敗,返回步驟502 ;
[0334]步驟508:判斷是否有NFC芯片的返回數(shù)據(jù),是則執(zhí)行步驟509,否則返回步驟508 ;
[0335]本實施例中,步驟508具體包括:等待數(shù)據(jù)中斷,當(dāng)接收到數(shù)據(jù)中斷時執(zhí)行步驟509,否則繼續(xù)等待數(shù)據(jù)中斷;
[0336]或者,本實施例中,步驟508具體包括:查詢數(shù)據(jù)中斷引腳的電平,當(dāng)數(shù)據(jù)中斷引腳的電平為高電平時執(zhí)行步驟509,否則繼續(xù)查詢數(shù)據(jù)中斷引腳的電平。
[0337]步驟509:讀取NFC芯片的返回數(shù)據(jù),并檢查讀取到的數(shù)據(jù),若為設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值則執(zhí)行步驟510,若為獲取數(shù)據(jù)請求的返回值則執(zhí)行步驟513 ;
[0338]本實施例中,設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值具體為配置發(fā)起者指令的應(yīng)答,獲取數(shù)據(jù)請求的返回值具體為數(shù)據(jù)交換指令的返回值;
[0339]優(yōu)選地,本實施例中,配置發(fā)起者指令為InLisPassiveTarget指令,數(shù)據(jù)交換指令為 InDataExchange 指令。
[0340]步驟510:檢查設(shè)置NFC芯片工作模式、形態(tài)和令牌參數(shù)的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟502,否則執(zhí)行步驟511 ;
[0341 ] 本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0342]步驟511:發(fā)送獲取數(shù)據(jù)請求給NFC芯片;
[0343]本實施例中,步驟511具體包括:生成并發(fā)送數(shù)據(jù)交換指令給NFC芯片;
[0344]優(yōu)選地,本實施例中,數(shù)據(jù)交換指令為InDataExchange指令。
[0345]步驟512:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟508,否則通信失敗,返回步驟502 ;
[0346]步驟513:檢查數(shù)獲取數(shù)據(jù)請求的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟502,否則執(zhí)行步驟514 ;
[0347]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0348]步驟514:發(fā)送動態(tài)口令給NFC芯片;
[0349]本實施例中,步驟514具體包括:生成并發(fā)送包含動態(tài)口令的數(shù)據(jù)交換指令給NFC
-H-* I I
心片;
[0350]優(yōu)選地,本實施例中數(shù)據(jù)交換指令為InDataExchange指令。
[0351]本實施例中,步驟514之前還包括:計算生成動態(tài)口令;
[0352]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0353]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)令牌中預(yù)置的密鑰和所述事件因子計算生成動態(tài)口令;
[0354]進(jìn)一步地,本實施例中,當(dāng)MCU讀取到NFC芯片返回的獲取數(shù)據(jù)請求的返回值時,還包括從獲取數(shù)據(jù)請求的返回值中獲取挑戰(zhàn)值;
[0355]相應(yīng)地,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0356]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰以及所述事件因子計算生成動態(tài)口令。
[0357]更進(jìn)一步地,本實施例中,步驟501中還可以包括:開啟定時器中斷,并設(shè)置定時器中斷的中斷優(yōu)先級最高;
[0358]相應(yīng)地,在本實施例中,當(dāng)MCU接收到定時器中斷時,更新令牌中預(yù)置的時間因子;
[0359]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令。
[0360]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令;
[0361]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、事件因子和所述時間因子計算生成動態(tài)口令,并更新所述事件因子;
[0362]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、所述時間因子以及所述事件因子計算生成動態(tài)口令。
[0363]本實施例中,計算生成動態(tài)口令之前還可以包括:提示用戶輸入確認(rèn)生成口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則計算生成動態(tài)口令,否則返回步驟502 ;或者包括:提示用戶輸入確認(rèn)生成口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則計算生成動態(tài)口令,否則返回步驟502。
[0364]本實施例中,步驟514之前還可以包括:提示用戶輸入確認(rèn)發(fā)送口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則執(zhí)行步驟514,否則返回步驟502 ;或者包括:提示用戶輸入確認(rèn)發(fā)送口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則執(zhí)行步驟514,否則返回步驟502。
[0365]步驟515:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則通信成功,返回步驟502,否則通信失敗,返回步驟502。
[0366]進(jìn)一步地,本實施例中,步驟509中還可以包括:若讀取到的數(shù)據(jù)為發(fā)送動態(tài)口令的返回值則檢查發(fā)送動態(tài)口令的返回值中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟502,否則執(zhí)行步驟514 ;
[0367]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0368]相應(yīng)地,步驟515替換為,判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟508,否則通信失敗,返回步驟502。
[0369]實施例七[0370]本發(fā)明實施例七提供一種NFC令牌的工作方法,所述令牌在被動模式下作為發(fā)起者與目標(biāo)設(shè)備進(jìn)行通信。參見圖7,所述令牌的工作方法具體包括令牌的MCU執(zhí)行以下步驟:
[0371]步驟601:進(jìn)行系統(tǒng)初始化;
[0372]步驟602:復(fù)位NFC芯片,設(shè)置令牌的工作狀態(tài)為初始狀態(tài),并復(fù)位觸發(fā)標(biāo)志;
[0373]具體地,本實施例中,復(fù)位NFC芯片包括:MCU控制其MCU_SPI_RST引腳輸出低電平,延時預(yù)設(shè)時間后,控制其MCU_SPI_RST引腳輸出高電平;
[0374]優(yōu)選地,本實施例中,步驟602之前還可以包括:檢查電池電量,且當(dāng)電池電量低于預(yù)設(shè)電量時提示電量過低;具體地,可以通過屏幕顯示電量過低和/或通過變換指示燈顏色提示電量過低和/或通過蜂鳴提示電量過低和/或通過語音提示電量過低。
[0375]步驟603:設(shè)置NFC芯片的超時時間;
[0376]具體地,本實施例中,設(shè)置NFC芯片的超時時間包括:MCU發(fā)送設(shè)置超時時間指令給NFC芯片,超時時間指令中包括上電應(yīng)答超時時間和通信超時時間;
[0377]優(yōu)選地,本實施例中,設(shè)置超時時間指令為Cfqlten參數(shù)為0x02的RFConfiguration 指令。
[0378]步驟604:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的設(shè)置超時時間應(yīng)答,是則繼續(xù)執(zhí)行步驟605,否則通信失敗,返回步驟602 ;
[0379]步驟605:根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功,是則執(zhí)行步驟606,否則通信失敗,返回步驟602 ;
[0380]具體地,本實施例中,根據(jù)接收到的設(shè)置超時時間應(yīng)答判斷設(shè)置NFC芯片的超時時間是否成功包括:判斷接收到的設(shè)置超時時間應(yīng)答的預(yù)設(shè)字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)字符串,是則設(shè)置NFC芯片的超時時間成功,否則設(shè)置NFC芯片的超時時間失??;
[0381]優(yōu)選地,本實施例中,判斷接收到的設(shè)置超時時間應(yīng)答的前三個字節(jié)上的數(shù)據(jù)是否為 Ox 00 OOFF。
[0382]步驟606:設(shè)置NFC芯片為被動模式的發(fā)起者形態(tài),設(shè)置并發(fā)送要尋的卡片的類型和速率給NFC芯片;
[0383]具體地,本實施例中,步驟606包括:初始化配置發(fā)起者指令,設(shè)置要尋的卡片的類型和速率,根據(jù)要尋的卡片的類型和速率設(shè)置發(fā)起者指令中的尋卡參數(shù),發(fā)送配置發(fā)起者指令給NFC芯片;
[0384]優(yōu)選地,本實施例中,配置發(fā)起者指令為InLisPassiveTarget指令,步驟506包括:初始化InLisPassiveTarget指令,設(shè)置要尋的卡片的類型和速率,根據(jù)要尋的卡片的類型和速率設(shè)置InLisPassiveTarget指令的BrTy參數(shù),發(fā)送InLisPassiveTarget指令給NFC芯片;
[0385]例如,如果設(shè)置的要尋的卡片的類型和速率分別為符合IS0/IEC14443協(xié)議的A型卡和 106kbps,則設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x00 ;
[0386]如果設(shè)置的要尋的卡片的類型和速率分別為FeliCa polling卡和212kbps,貝Ij設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x01 ;
[0387]如果設(shè)置的要尋的卡片的類型和速率分別為FeliCa polling卡和424kbps,貝丨J設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x02 ;[0388]如果設(shè)置的要尋的卡片的類型和速率分別為符合IS0/IEC14443-3協(xié)議的B型卡和 106kbps,則設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x03 ;
[0389]如果設(shè)置的要尋的卡片的類型和速率分別為Innovision Jewel tag卡和106kbps,則設(shè)置 InLisPassiveTarget 指令的 BrTy 參數(shù)為 0x04。
[0390]步驟607:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則繼續(xù)執(zhí)行步驟608,否則通信失敗,返回步驟602 ;
[0391]步驟608:檢查觸發(fā)標(biāo)志是否置位,是則執(zhí)行步驟610,否則執(zhí)行步驟609 ;
[0392]步驟609:等待接收數(shù)據(jù)中斷,返回步驟608 ;
[0393]本實施例中,當(dāng)MCU接收到數(shù)據(jù)中斷時,讀取NFC芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為設(shè)置所述NFC芯片的工作模式、形態(tài)和令牌參數(shù)的返回值,則更新令牌的工作狀態(tài)為第一預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位,若為獲取數(shù)據(jù)請求的返回值,則更新令牌的工作狀態(tài)為第二預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位;
[0394]本實施例中,設(shè)置所述NFC芯片的工作模式、形態(tài)和令牌參數(shù)的返回值具體為配置發(fā)起者指令的應(yīng)答,獲取數(shù)據(jù)請求的返回值具體為數(shù)據(jù)交換指令的應(yīng)答;
[0395]優(yōu)選地,本實施例中,配置發(fā)起者指令為InLisPassiveTarget指令,數(shù)據(jù)交換指令為 InDataExchange 指令。
[0396]步驟610:檢查令牌的工作狀態(tài),若為第一預(yù)設(shè)狀態(tài)則執(zhí)行步驟611,若為第二預(yù)設(shè)狀態(tài)則執(zhí)行步驟614 ;
[0397]步驟611:將觸發(fā)標(biāo)志復(fù)位,檢查接收到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟602,否則執(zhí)行步驟612 ;
[0398]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0399]步驟612:發(fā)送獲取數(shù)據(jù)請求給NFC芯片;
[0400]本實施例中,步驟612具體包括:生成并數(shù)據(jù)交換指令給NFC芯片;
[0401]優(yōu)選地,本實施例中,數(shù)據(jù)交換指令為InDataExchange指令。
[0402]步驟613:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟608,否則通信失敗,返回步驟602 ;
[0403]步驟614:將觸發(fā)標(biāo)志復(fù)位,檢查接收到的數(shù)據(jù)中的狀態(tài)參數(shù)是否為預(yù)設(shè)值,是則通信終端移出,通信結(jié)束,返回步驟602,否則執(zhí)行步驟615 ;
[0404]本實施例中,狀態(tài)參數(shù)具體為status,預(yù)設(shè)值具體為0x29。
[0405]步驟615:發(fā)送動態(tài)口令給NFC芯片;
[0406]本實施例中,步驟615具體包括:生成并發(fā)送包含動態(tài)口令的數(shù)據(jù)交換指令給NFC
-H-* I I
心片;
[0407]優(yōu)選地,本實施例中,數(shù)據(jù)交換指令為InDataExchange指令。
[0408]本實施例中,步驟615之前還包括:計算生成動態(tài)口令;
[0409]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0410]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)令牌中預(yù)置的密鑰和所述事件因子計算生成動態(tài)口令;
[0411]進(jìn)一步地,本實施例中,當(dāng)MCU讀取到NFC芯片返回的獲取數(shù)據(jù)請求的返回值時,還包括從獲取數(shù)據(jù)請求的返回值中獲取挑戰(zhàn)值;
[0412]相應(yīng)地,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和事件因子計算生成動態(tài)口令,并更新所述事件因子;
[0413]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰以及所述事件因子計算生成動態(tài)口令。
[0414]更進(jìn)一步地,本實施例中,步驟601中還可以包括:開啟定時器中斷,并設(shè)置定時器中斷的中斷優(yōu)先級最高;
[0415]相應(yīng)地,在本實施例中,當(dāng)MCU接收到定時器中斷時,更新令牌中預(yù)置的時間因子;
[0416]計算生成動態(tài)口令具體包括:根據(jù)令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令。
[0417]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰和所述時間因子計算生成動態(tài)口令;
[0418]或者,計算生成動態(tài)口令具體包括:根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、事件因子和所述時間因子計算生成動態(tài)口令,并更新所述事件因子;
[0419]或者,計算生成動態(tài)口令具體包括:更新令牌中預(yù)置的事件因子,根據(jù)獲取到的挑戰(zhàn)值、令牌中預(yù)置的密鑰、所述時間因子以及所述事件因子計算生成動態(tài)口令。
[0420]本實施例中,計算生成動態(tài)口令之前還可以包括:提示用戶輸入確認(rèn)生成口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則計算生成動態(tài)口令,否則返回步驟602 ;或者包括:提示用戶輸入確認(rèn)生成口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則計算生成動態(tài)口令,否則返回步驟602。
[0421]本實施例中,步驟615之前還可以包括:提示用戶輸入確認(rèn)發(fā)送口令信息,檢查按鍵中斷引腳的電平,并判斷在預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖剑莿t執(zhí)行步驟615,否則返回步驟602 ;或者包括:提示用戶輸入確認(rèn)發(fā)送口令信息,等待接收按鍵中斷,并判斷在預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則執(zhí)行步驟615,否則返回步驟602。
[0422]步驟616:判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則通信成功,返回步驟602,否則通信失敗,返回步驟602。
[0423]進(jìn)一步地,本實施例中,當(dāng)MCU接收到數(shù)據(jù)中斷時還可以包括:若讀取到的數(shù)據(jù)為發(fā)送動態(tài)口令的返回值,則將所述觸發(fā)標(biāo)志置位;
[0424]相應(yīng)地,步驟616替換為,判斷在預(yù)設(shè)時間內(nèi)是否接收到NFC芯片返回的確認(rèn)字符,是則返回步驟608,否則通信失敗,返回步驟602。
[0425]以上所述的實施例只是本發(fā)明較優(yōu)選的【具體實施方式】,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種NFC令牌的工作方法,其特征在于,包括: 步驟S1:令牌中的微控制單元進(jìn)行系統(tǒng)初始化; 步驟S2:所述微控制單元復(fù)位所述令牌中的近場通信芯片; 步驟S3:所述微控制單元向所述近場通信芯片發(fā)送設(shè)置近場通信芯片指令; 步驟S4:所述微控制單元等待所述近場通信芯片返回的設(shè)置近場通信芯片指令返回值; 步驟S5:當(dāng)所述微控制單元讀取到所述近場通信芯片返回的設(shè)置近場通信芯片指令返回值時,發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片; 步驟S6:所述微控制單元等待所述近場通信芯片返回的第一預(yù)設(shè)指令返回值; 步驟S7:當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第一預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片; 所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:所述微控制單元計算生成動態(tài)口令。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S2中還包括: 步驟S2丨:所述微控制單元等待用戶輸入確認(rèn)開始信息,當(dāng)接收到用戶輸入的確認(rèn)開始信息時執(zhí)行步驟S3,否則繼續(xù)等待用戶輸入確認(rèn)開始信息。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟S2'具體包括:所述微控制單元檢查按鍵中斷引腳的電平,當(dāng)所述按鍵中斷引腳的電平為高電平時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述按鍵中斷引腳的電平為低電平時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述按鍵中斷引腳的電平。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述微控制單元發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片之前和/或所述微控制單元發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:檢查所述按鍵中斷引腳的電平,若為高電平則繼續(xù)執(zhí)行,若為低電平則返回步驟S2。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟SI中還包括所述微控制單元初始化按鍵中斷; 所述步驟S2丨具體包括:所述微控制單元開啟按鍵中斷,檢查開始標(biāo)志,當(dāng)所述開始標(biāo)志置位時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述開始標(biāo)志未置位時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述開始標(biāo)志; 所述方法還包括:當(dāng)所述微控制單元接收到按鍵中斷時,檢查所述開始標(biāo)志是否置位,是則退出按鍵中斷,否則將所述開始標(biāo)志置位,退出按鍵中斷。
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟`SI中還包括所述微控制單元初始化按鍵中斷,并設(shè)置按鍵中斷為上升沿觸發(fā); 所述步驟S2丨具體包括:所述微控制單元開啟按鍵中斷,檢查開始標(biāo)志,當(dāng)所述開始標(biāo)志置位時表示接收到用戶輸入的確認(rèn)開始信息,執(zhí)行步驟S3,當(dāng)所述開始標(biāo)志未置位時表示沒有接收到用戶輸入的確認(rèn)開始信息,繼續(xù)檢查所述開始標(biāo)志; 所述方法還包括:當(dāng)所述微控制單元接收到按鍵中斷時,檢查所述開始標(biāo)志是否置位,是則退出按鍵中斷,否則將所述開始標(biāo)志置位,并設(shè)置按鍵中斷為下降沿觸發(fā),退出按鍵中斷。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S3中還包括:所述微控制單元設(shè)置所述近場通信芯片的超時時間。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述微控制單元設(shè)置所述近場通信芯片的超時時間具體包括:所述微控制單元發(fā)送設(shè)置超時時間指令給所述近場通信芯片,所述設(shè)置超時時間指令中包含上電應(yīng)答超時時間和通信超時時間。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S3具體包括:所述微控制單元設(shè)置令牌的序列號,根據(jù)所述令牌的序列號生成配置目標(biāo)設(shè)備指令,發(fā)送所述配置目標(biāo)設(shè)備指令給所述近場通信芯片; 所述第一預(yù)設(shè)指令為接收數(shù)據(jù)指令,所述第二預(yù)設(shè)指令為發(fā)送數(shù)據(jù)指令。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的設(shè)置近場通信芯片指令返回值時,所述發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片之前還包括:所述微控制單元發(fā)送第二預(yù)設(shè)指令給所述近場通信芯片,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第二預(yù)設(shè)指令返回值時,發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述步驟S3具體包括:所述微控制單元設(shè)置模擬卡片參數(shù),根據(jù)所述模擬卡片參數(shù)生成配置目標(biāo)設(shè)備指令,發(fā)送所述配置目標(biāo)設(shè)備指令給所述近場通信芯片,所述模擬卡片參數(shù)包括模擬卡片類型和模擬卡片ID ; 所述第一預(yù)設(shè)指令為獲取數(shù)據(jù)指令,所述第二預(yù)設(shè)指令為回復(fù)發(fā)起者指令。
12.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S3具體包括:所述微控制單元設(shè)置尋卡類型和尋卡速率,根據(jù)所述尋卡類型和尋卡速率生成配置發(fā)起者指令,發(fā)送所述配置發(fā)起者指令給所述近場通信芯片; 所述第一預(yù)設(shè)指令和所述第二預(yù)設(shè)指令均為數(shù)據(jù)交換指令。
13.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟SI中還包括:初始化數(shù)據(jù)中斷; 所述步驟S4至步驟S7具體包括: 步驟Al:所述微控制單元等待接收數(shù)據(jù)中斷,當(dāng)所述微控制單元接收到數(shù)據(jù)中斷時執(zhí)行步驟A2 ; 步驟A2:所述微控制單元讀取所述近場通信芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為所述設(shè)置近場通信芯片指令返回值,則發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片,返回步驟Al,若為所述第一預(yù)設(shè)指令返回值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片。
14.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟SI中還包括:初始化數(shù)據(jù)中斷; 所述步驟S2中還包括:初始化令牌的工作狀態(tài)為初始狀態(tài); 所述步驟S4至步驟S7具體包括: 步驟B1:所述微控制單元檢查觸發(fā)標(biāo)志,若所述觸發(fā)標(biāo)志未置位,則等待接收數(shù)據(jù)中斷,返回步驟BI,若所述觸發(fā)標(biāo)志置位,則執(zhí)行步驟B2 ; 當(dāng)所述微控制單元接收到數(shù)據(jù)中斷時,讀取所述近場通信芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為所述設(shè)置近場通信芯片指令返回值,則更新令牌的工作狀態(tài)為第一預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位,若為所述第一預(yù)設(shè)指令返回值,則更新令牌的工作狀態(tài)為第二預(yù)設(shè)狀態(tài),并將所述觸發(fā)標(biāo)志置位; 步驟B2:所述微控制單元將所述觸發(fā)標(biāo)志復(fù)位,檢查令牌的工作狀態(tài),若為第一預(yù)設(shè)狀態(tài)則發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片,返回步驟BI,若為第二預(yù)設(shè)狀態(tài)則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片。
15.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟SI中還包括:初始化數(shù)據(jù)中斷; 所述步驟S4至步驟S7具體包括: 步驟Cl:所述微控制單元查詢數(shù)據(jù)中斷引腳的電平,當(dāng)所述數(shù)據(jù)中斷引腳的電平為高電平時執(zhí)行步驟C2 ; 步驟C2:所述微控制單元讀取所述近場通信芯片的返回數(shù)據(jù),檢查讀取到的數(shù)據(jù),若為所述近場通信芯片指令返回值,則發(fā)送第一預(yù)設(shè)指令給所述近場通信芯片,返回步驟Cl,若為所述第一預(yù)設(shè)指令返回值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片。
16.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算生成動態(tài)口令之前還包括:所述微控制單元提示用戶輸入確認(rèn)生成口令信息,并判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息,是則計算生成動態(tài)口令,否則返回步驟S2。
17.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息具體包括:所述微控制單元檢查按鍵中斷引腳的電平,并判斷在第一預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則在第一預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)生成口令`信息,否則在第一預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)生成口令信息。
18.根據(jù)權(quán)利要求16所述的方法,其特征在于,所述步驟SI中還包括:初始化按鍵中斷; 所述判斷在第一預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)生成口令信息具體包括:所述微控制單元等待接收按鍵中斷,并判斷在第一預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則在第一預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)生成口令信息,否則在第一預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)生成口令信息。
19.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第一預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:所述微控制單元提示用戶輸入確認(rèn)發(fā)送口令信息,并判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息,是則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片,否則返回步驟S2。
20.根據(jù)權(quán)利要求19所述的方法,其特征在于,所述判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息具體包括:所述微控制單元檢查按鍵中斷引腳的電平,并判斷在第二預(yù)設(shè)時間內(nèi)按鍵中斷引腳的電平是否變?yōu)楦唠娖?,是則在第二預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)發(fā)送口令信息,否則在第二預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)發(fā)送口令信息。
21.根據(jù)權(quán)利要求19所述的方法,其特征在于,所述步驟SI中還包括:初始化按鍵中斷; 所述判斷在第二預(yù)設(shè)時間內(nèi)是否接收到用戶輸入的確認(rèn)發(fā)送口令信息具體包括:所述微控制單元等待接收按鍵中斷,并判斷在第二預(yù)設(shè)時間內(nèi)是否接收到按鍵中斷,是則在第二預(yù)設(shè)時間內(nèi)接收到用戶輸入的確認(rèn)發(fā)送口令信息,否則在第二預(yù)設(shè)時間內(nèi)沒有接收到用戶輸入的確認(rèn)發(fā)送口令信息。
22.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算生成動態(tài)口令具體包括:根據(jù)預(yù)置的密鑰和事件因子計算生成動態(tài)口令。
23.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算生成動態(tài)口令之前還包括:從所述近場通信芯片返回的第一預(yù)設(shè)指令返回值中獲取挑戰(zhàn)值,并顯示所述挑戰(zhàn)值; 所述計算生成動態(tài)口令具體包括:根據(jù)所述挑戰(zhàn)值、預(yù)置的密鑰和事件因子計算生成動態(tài)口令。
24.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算生成動態(tài)口令之前還包括:從所述近場通信芯片返回的第一預(yù)設(shè)指令返回值中獲取挑戰(zhàn)值,并顯示所述挑戰(zhàn)值; 所述計算生成動態(tài)口令具體包括:根據(jù)所述挑戰(zhàn)值以及預(yù)置的密鑰、事件因子和時間因子計算生成動態(tài)口令。
25.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算生成動態(tài)口令具體包括:根據(jù)預(yù)置的密鑰和時間因子計算生成動態(tài)口令。
26.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算生成動態(tài)口令之前還包括:從所述近場通信芯片返回的第一預(yù)設(shè)指令返回值中獲取挑戰(zhàn)值,并顯示所述挑戰(zhàn)值; 所述計算生成動態(tài) 口令具體包括:根據(jù)所述挑戰(zhàn)值、預(yù)置的密鑰和時間因子計算生成動態(tài)口令。
27.根據(jù)權(quán)利要求22至24中任意一項權(quán)利要求所述的方法,其特征在于,所述計算生成動態(tài)口令之前還包括:更新所述事件因子。
28.根據(jù)權(quán)利要求22至24中的任意一項權(quán)利要求所述的方法,其特征在于,所述計算生成動態(tài)口令之后還包括:更新所述事件因子。
29.根據(jù)權(quán)利要求24至26中任意一項權(quán)利要求所述的方法,其特征在于,所述步驟SI中還包括初始化定時器中斷,并設(shè)置所述定時器中斷的中斷級別最高; 所述方法還包括:當(dāng)所述微控制單元接收到定時器中斷時,更新時間因子。
30.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S7之后還包括:所述微控制單元等待所述近場通信芯片返回的第二預(yù)設(shè)指令返回值,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第二預(yù)設(shè)指令返回值時,發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片。
31.根據(jù)權(quán)利要求1或30所述的方法,其特征在于,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第一預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:檢查所述第一預(yù)設(shè)指令返回值中的狀態(tài)參數(shù),若所述狀態(tài)參數(shù)為預(yù)設(shè)值,則返回步驟S2,若所述狀態(tài)參數(shù)不為預(yù)設(shè)值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片。
32.根據(jù)權(quán)利要求30所述的方法,其特征在于,當(dāng)所述微控制單元讀取到所述近場通信芯片返回的第二預(yù)設(shè)指令返回值時,所述發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所述近場通信芯片之前還包括:檢查所述第二預(yù)設(shè)指令返回值中的狀態(tài)參數(shù),若所述狀態(tài)參數(shù)為預(yù)設(shè)值,則返回步驟S2,若所述狀態(tài)參數(shù)不為預(yù)設(shè)值,則發(fā)送包含令牌生成的動態(tài)口令的第二預(yù)設(shè)指令給所 述近場通信芯片。
【文檔編號】H04L9/32GK103873256SQ201410101322
【公開日】2014年6月18日 申請日期:2014年3月18日 優(yōu)先權(quán)日:2014年3月18日
【發(fā)明者】陸舟, 于華章 申請人:飛天誠信科技股份有限公司