基于移動終端NFC的打卡程序設(shè)計與實現(xiàn)_第1頁
基于移動終端NFC的打卡程序設(shè)計與實現(xiàn)_第2頁
基于移動終端NFC的打卡程序設(shè)計與實現(xiàn)_第3頁
基于移動終端NFC的打卡程序設(shè)計與實現(xiàn)_第4頁
基于移動終端NFC的打卡程序設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、    基于移動終端nfc的打卡程序設(shè)計與實現(xiàn)    李思辰 張仕霞 李子堯 岳翔摘要:針對打卡可能出現(xiàn)作弊和缺陷以及移動終端nfc應(yīng)用面較狹窄的問題,提出使用移動終端nfc模塊來解決這些問題。普通的lbs定位打卡時,通過移動運營商的無線電通訊網(wǎng)絡(luò)或者外部定位方式獲取移動設(shè)備用戶的位置信息,非常容易作弊,如虛擬定位、替人打卡等.因此,文章提出使用易安卓集成開發(fā)環(huán)境,通過調(diào)用手機的nfc模塊,獲取磁卡的數(shù)據(jù),經(jīng)rsa算法進行加解密后進行打卡。此方法的便攜性、防作弊效果高于普通的打卡模式,可有效避免怠工、怠學等消極現(xiàn)象。關(guān)鍵詞:nfc;磁卡;易安卓;打卡:t

2、p399:a:1006-8228(2020)09-76-05design and implementation of attendance checking program using mobile terminal nfc moduleli sichen1, zhang shixia1, li 2iyao2, yue xiang3(1. tianfu college of swufe, chengdu ,sichuan 610041,china;2.sichuan university;3. chengdu unirersity of technology)abstract: aiming

3、at the problems of possible cheating and defects in attendance checking and fewer applications of nfc inmobile terminal, this paper proposes to use nfc module of mobile terminal to solve these problems. when use ordinary lbs(location based services) attendance checking, which obtains the location in

4、formation of mobile device users through the wirelesscommunication network of' mobile operators or external positioning methods, it is very easy to cheat, such as virtual positioningand/or checking in for someone else. etc. therefore, this paper proposes that use e4a integrated development envir

5、onment, bycalling the nfc module of mobile phone to obtain the data of magnetic card. and then to make attendance checking afterencryption and decryption by rsa algorithm. the portability and anti cheating effect of this method are higher than that of theordinary attendance checking mode, which can

6、effectively avoid the negative phenomena such as slow work and learning.key words: nfc; magnetic card; e4a; attendance checking0引言隨著科技的發(fā)展,智能手機幾乎都帶有了nfc模塊,但目前市面上的app針對該模塊提供的服務(wù)大多局限于門禁,公交卡模擬上。本次創(chuàng)新的目標設(shè)計實現(xiàn)通過移動終端nfc模塊感應(yīng)磁卡來進行打卡的app,以解決目前打卡環(huán)境中容易出現(xiàn)的作弊問題,并填補應(yīng)用市場中關(guān)于nfc模塊app的空缺。1集成開發(fā)環(huán)境(ide)介紹本文采用易安卓(e4a)開發(fā),易安卓整

7、體采用中文界面、中文代碼的編程模式,但其核心是javase2,此外還使用了由谷歌公司發(fā)行的安卓打包工具aapt(android asset packaging tool).采用易安卓開發(fā)出的程序在安卓平臺運行,所打包的程序均為*.apk格式,在其他系統(tǒng)的手機或無模擬器的pc電腦上將無法運行。2磁卡磁卡(magnetic card)可以用來存儲一些代表個人身份的信息,磁卡可以被nfc模塊所感應(yīng)從而從磁卡標簽中提取到所需要的相關(guān)信息。本文中的程序?qū)嵗残枰x取磁卡中兩個信息,第一個為磁卡的id信息,第二個是人為寫入的信息。其中,id在一般情況下是不允許修改的,第二個信息則要根據(jù)卡的種類來決定是否可

8、被破解復制,磁卡的種類也直接影響了nfc打卡的反作弊的效率。目前共有三種磁卡分別是ml卡、id卡、cpu卡。m1卡即原卡,如日常生活中小區(qū)物業(yè)發(fā)放的門禁卡,其0扇區(qū)不可以被修改,但其他的扇區(qū)則允許被修改,安全性適中,性價比偏高,卡內(nèi)只有一套算法,有被破解復制的風險,但也可作為nfc功能打卡的備選卡之一。id卡只存儲id,沒有算法,安全性極低,非常容易被不法分子復制,不推薦使用。cpu卡有自己的操作系統(tǒng),卡內(nèi)有兩套算法用來保護數(shù)據(jù)安全,幾乎無法被復制,安全性非常高,常用于銀行卡中,但相對的這種卡成本較高。cpu卡是作為nfc功能打卡功能的首選卡。3 nfc技術(shù)nfc (near field co

9、mmunication)即近場通訊技術(shù)2,也可稱為近距離通訊技術(shù),該技術(shù)可以使得設(shè)備能夠識別讀取和模擬磁卡信息,現(xiàn)在常用于小區(qū)門禁卡、公交卡等生活用卡。物聯(lián)網(wǎng)iot(the internet of things)技術(shù)最早于1995年比爾·蓋茨在書the road ahead中提及。現(xiàn)在普遍接受的定義是:利用各種傳感器和網(wǎng)絡(luò)設(shè)備,實現(xiàn)將各種設(shè)備、物品接入互聯(lián)網(wǎng)以獲得實時的數(shù)據(jù)m-。本文程序?qū)嵗龑褂胣fc技術(shù)里讀卡器模式中的讀卡和寫卡兩個功能,且是本程序的核心功能。該功能需要磁卡配合使用。目前,該技術(shù)在移動終端中僅能在安卓平臺使用,蘋果(ios)系統(tǒng)由于系統(tǒng)限制,不開放nfc的接口以

10、供調(diào)用。nfc讀卡器模式,可以讀取兩個磁卡信息,第一個信息為磁卡的id,這個id是磁卡出廠時,廠家設(shè)定好的一串數(shù)值,該數(shù)值通常不可篡改。另一個是磁卡帶有扇區(qū)內(nèi)所存放的數(shù)據(jù),該數(shù)據(jù)可以被讀取出來。本文程序?qū)嵗峁┝藘蓚€模式思路:一個是直接讀取唯一的id,獲取相關(guān)用戶信息,該方法的優(yōu)點是快捷方便,產(chǎn)生的內(nèi)存占用和對數(shù)據(jù)庫的壓力相對較小;另一個是不讀取id,轉(zhuǎn)而讀取磁卡內(nèi)的數(shù)據(jù),再將讀取出來的信息進行解密,加密方法聯(lián)網(wǎng)保存,防止本地篡改,解密后再從數(shù)據(jù)庫瀆取信息并返回,這樣能夠最大可能的避免因為磁卡量產(chǎn)而可能造成的id重復的問題。4適用范圍本文提出的nfc打卡方式推薦在以下環(huán)境使用:經(jīng)常舉辦活動且需

11、要對人員進行清點的環(huán)境、辦公上班/開會打卡、其他人員相對較多但地點不固定的活動。目前市場上存在和nfc打卡功能相似的打卡機4,但是這些打卡機都需要安裝在固定位置且需要長時間連接電源,且設(shè)備顯得十分笨重,不適用于簽到。本程序運行在安卓系統(tǒng)上,只要手機有電有網(wǎng)絡(luò)即可打卡,便攜性大幅度提高了。同時目前還發(fā)現(xiàn)了市場上有效果同樣或相似的二維碼打卡5,其優(yōu)點是成本低廉,但是二維碼打卡容易被篡改,安全性偏低,生成二維碼需依托服務(wù)器來獲取較多數(shù)值,會增加服務(wù)器壓力。nfc所發(fā)放的磁卡是實物,篡改難度大,在一些活動中使用磁卡具有紀念意義。所以一般認為使用nfc打卡更優(yōu)于二維碼打卡。該磁卡的使用僅需一名管理員配備

12、一臺帶有nfc功能的安卓手機。如果參與人員多,可以多配備幾名管理員,這樣的配置無論是從現(xiàn)實人員管理還是服務(wù)器維護上都是成本低廉的配置。有效減少大量用戶涌入服務(wù)器打卡而造成的服務(wù)器擁堵。5設(shè)計思路5.1功能需求分析本文程序?qū)⒁跃€下活動打卡為實例,為了簡潔不冗雜,程序共有兩個基礎(chǔ)功能:打卡功能,二次確認。八個管理員功能:錄入成員數(shù)據(jù)、修改綁定卡、將所有簽到置為未簽到、無卡簽到、無卡二次確認簽到、錄入無磁卡數(shù)據(jù)、查詢簽到情況,補錄照片,以及防掛機機制。5.2磁卡感應(yīng)流程本文程序?qū)嵗鶕?jù)磁卡內(nèi)數(shù)據(jù)而采取不同的讀取方式。當讀取磁卡標簽時,如果存在寫入的文本則均采用加密存儲數(shù)據(jù)方式來對磁卡數(shù)據(jù)進行解析,否

13、則采用直接獲取磁卡id的方式查詢數(shù)據(jù)庫對應(yīng)數(shù)據(jù)。如圖1所示。采用加密存儲數(shù)據(jù)方式中,所有解密均在服務(wù)器完成,不把相關(guān)解密密鑰傳回本地,盡可能的避免被5.3加密方式錄入磁卡的數(shù)據(jù)均為數(shù)字,故可采用rsa算法對數(shù)據(jù)進行加密或解密處理。rsa算法主要有以下幾個步驟。(1)選擇p、q兩個超級大的質(zhì)數(shù),初步選擇1024位。(2)令n=p*q。?。╪)=(p-1)*(q-1)。計算與n互質(zhì)的整數(shù)的個數(shù)。(3)取e1(4)令ed mod (n)=l,計算d,(n,d)作為私鑰對。可用擴展歐幾里的算法進行計算。(5)銷毀p、q。密文=明文e mod n,明文=密文dmod n。利用蒙哥馬利方法進行計算,也叫反

14、復平方法。5.4打卡流程如圖2所示為本文程序?qū)嵗拇蚩鞒?,其中需要人工的只有刷卡和最后的人工確認。人工確認環(huán)節(jié)(校驗活動參與者信息與照片)由活動管理員完成。需要注意的是,所提到的所謂黑卡,即復制卡,是不法分子通過非法手段制造出來的。程序通過數(shù)據(jù)庫查驗磁卡本身算法來判斷是否黑卡,同時管理員也可人工核實身份,判斷其是否違規(guī)參與,如果違規(guī)參與可將其拉黑處理,被拉黑的卡同樣屬于黑卡,會被程序拒絕打卡。5.5權(quán)限設(shè)計本文程序?qū)嵗灿形宸N權(quán)限,權(quán)限不同使用功能會受到不同程度的限制,分別如下。普通用戶卡:一般普通的磁卡都是這個權(quán)限,允許打卡和二次確認打卡。管理員卡,管理員卡能夠使用除將所有簽到置為未簽到外

15、所有的管理功能,權(quán)限較高,一般由活動管理員持有。超級管理員卡,能夠使用全部功能,權(quán)限最高,一般由活動最高管理員持有。無卡用戶:此權(quán)限提供給設(shè)備不具有nfc功能的用戶使用,能夠不需要刷卡就能錄入成員數(shù)據(jù)。 拉黑卡:指因為非法操作被系統(tǒng)或管理員拉黑的的卡,所有功能禁止使用。6程序?qū)崿F(xiàn)6.1界面設(shè)計界面設(shè)計力求簡潔,程序啟動后主界面共有三個按鈕,兩個編輯框,以及一些用于美化或顯示狀態(tài)的組件。三個按鈕組件中默認狀態(tài)下只有兩個可以操作,用以區(qū)分是首次打卡還是二次確認打卡。并附帶了一個提供給管理員的按鈕,普通用戶權(quán)限下無法使用,需要活動管理員刷卡確認后才可使用。在兩個編輯框組件中,第一個編輯框用于顯示磁卡

16、的id,第二個編輯框用于顯示瀆卡后從數(shù)據(jù)庫中獲取到的數(shù)據(jù)(如參與人姓名,年齡等個人信息),另外程序界面還附加了增加程序整體美觀的輪播圖,并使用了安卓api中提供的沉浸模式(setsystemuivisibility)使得程序整體的ui和手機操作系統(tǒng)的ui更加貼切。6.2功能實現(xiàn)6.2.1權(quán)限獲取安卓6.0之后版本,所有的安卓程序在執(zhí)行一些敏感操作時都需要向系統(tǒng)申請權(quán)限,只有用戶許可后才能繼續(xù),故所有安卓程序最好在啟動前就將所需要的權(quán)限全部申請完畢,避免中途申請權(quán)限而影響打卡進度。在易安卓中,創(chuàng)建權(quán)限組件后,通過調(diào)用:權(quán)限操作i.申請全部權(quán)限(),即可申請本文程序?qū)嵗兴枰乃袡?quán)限(存儲、電

17、話、相機),其中因為存儲權(quán)限是必須的(用于保存打卡用戶照片,更新app等操作),所以必須確保程序擁有存儲權(quán)限才能進入app,故需再調(diào)用:權(quán)限操作i.檢查權(quán)限(”android. permlssion.write_external_storage”)來判斷是否擁有存儲權(quán)限,如果沒有則拒絕進入程序。6.2.2 nfc功能易安卓中,創(chuàng)建nfc組件對象后,通過調(diào)用nfcl.初始化(),并根據(jù)返回值來進行下一步操作:設(shè)備不支持nfc功能;設(shè)備未開啟nfc功能;初始化成功。如果返回值為l,則提示用戶更換設(shè)備,如果返回值為2則提示用戶打開nfc,如果返回值為3則提示nfc初始化成功。初始化后,默認nfc組件

18、對象就已經(jīng)處于了讀取模式,此時不能調(diào)用命令:nfcl.置讀取模式(),如果強行調(diào)用會發(fā)生無法被捕獲的異常導致程序崩潰。nfc組件共提供了兩個事件,分別是:nfcl.讀取到信息,nfcl.讀取到卡號。如果瀆取到信息為空,則代表用戶的未寫卡使用的直接獲取id的方式來進行打卡。如果有內(nèi)容,則將內(nèi)容合并到sql語句中執(zhí)行查詢,數(shù)據(jù)庫進行解密核對操作,再根據(jù)數(shù)據(jù)庫返回的記錄集來判斷是否打卡成功。nfcl.置寫入模式(“文本”),這個方法可以將當前nfc組件對象的模式改為寫入模式,并將括號內(nèi)的文本內(nèi)容寫入之后與手機nfc感應(yīng)的磁卡內(nèi),當管理員錄入數(shù)據(jù)時,需要調(diào)用此方法來進行寫卡操作。6.2.3錄入功能此功

19、能由管理員操作。如圖4所示,展示了瀆取磁卡數(shù)據(jù)模式下錄入功能的流程圖,如果在直接讀取唯一id模式下,則不需要返回加密數(shù)據(jù)以及再次刷卡將數(shù)據(jù)寫入磁卡內(nèi)這兩個步驟,判斷重復id則是基于磁卡的id,若在讀取磁卡數(shù)據(jù)模式下,則會基于磁卡內(nèi)數(shù)據(jù)來進行判定。6.2.4修改數(shù)據(jù)本文程序?qū)嵗还蔡峁┝巳棓?shù)據(jù)修改類功能,分別為:修改綁定卡、將所有簽到置為未簽到,補錄照片。(1)修改綁定卡:此功能在磁卡丟失、損壞等情況下,需要更換新磁卡,通過輸入個人信息查詢,成功查詢到從數(shù)據(jù)庫返回加密數(shù)據(jù),再進行刷卡,將此加密信息寫入磁卡內(nèi)即可。(2)將所有簽到置為未簽到:這項影響級別較高,僅權(quán)限為超級管理員使用,將數(shù)據(jù)庫內(nèi)已

20、有的所有人的簽到情況全部置為未簽到,每次活動結(jié)束統(tǒng)計完數(shù)據(jù)后均可執(zhí)行該操作重置。(3)補錄照片:在錄入數(shù)據(jù)時,考慮到個人隱私問題,照片錄入設(shè)定為可選項,即不錄入照片也能使用打卡所有功能。若后期又需要錄入照片可以使用該功能錄入,同時此功能也可以修改照片。實現(xiàn)此功能需要使用上傳組件。如圖5。6.2.5無卡功能這個功能提供給設(shè)備不具有nfc功能的用戶使用或者給沒有帶磁卡的用戶打卡,能夠不需要刷卡就能錄入成員數(shù)據(jù)。若沒有管理員磁卡則需要特殊的方法打開此功能和權(quán)限,具體方法可以根據(jù)實際情況自行設(shè)計。所有無卡功能均在打卡或登記時跳過了刷卡環(huán)節(jié)改為輸入用戶個人信息,此方法打卡速度比較緩慢不太推薦使用。此外通

21、過本功能打卡的賬號將會額外記錄一項例外打卡,如圖5右圖信息框所示,該項數(shù)值可以成為考核的一項指標,過多次數(shù)進行無卡打卡可以將其拉黑處理。6.2.6查詢簽到情況該功能用于查詢磁卡用戶是否打卡,易安卓下執(zhí)行sql語句代碼:mysql直連1.查詢記錄(”users”,"name,sign","uid='"&uid&""').6.2.7防掛機機制此功能用于長時間不操作程序,程序會自行將界面鎖定無法操作,并等待指紋校驗,校驗成功后才會解鎖。在代碼中僅需設(shè)置一個時鐘和指紋組件,并在每個按鈕前都增加一個刷新時鐘周期的

22、代碼即可完成。7結(jié)束語本文提出了基于nfc技術(shù)的新式打卡理念并以程序?qū)崿F(xiàn),很大程度上解決了打卡時出現(xiàn)的冒領(lǐng)、虛擬定位等作弊現(xiàn)象。提出使用實體磁卡打卡的方式,其在紀念意義、實用性、便攜性等方面會高于同為競品的打卡機或二維碼打卡。在本文程序?qū)嵗兴褂玫倪B接數(shù)據(jù)庫方法是易安卓提供的mysql直連組件,通過該組件連接數(shù)據(jù)庫會將數(shù)據(jù)庫賬號密碼直接寫入代碼內(nèi),容易被反編譯破解,存在安全隱患,在實際代碼中,可考慮將賬號密碼存放在服務(wù)器內(nèi)作為php中間件調(diào)用,能夠在很大程度上降低數(shù)據(jù)庫的安全隱患。參考文獻(references):1劉班,基于lbs的學生課堂簽到系統(tǒng)開發(fā)j.信息通信,2019.10:96-982張峰,趙衛(wèi)東,鄭永果,仇麗青,結(jié)合mooc和翻轉(zhuǎn)課堂的javase接口教學研究j.計算機教育,2018.9:69-723龔嬌,物聯(lián)網(wǎng)在智慧城市的應(yīng)用研究j.現(xiàn)代交際,2019.22:63

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論