[開源]使用C# 對CPU卡基本操作封裝

來源:互聯網
上載者:User

Github 地址:github.com/zifeiniu/CPUCardLib

項目需求及簡介:

公司要求將使用者相關的資訊儲存到射頻卡中,之前項目使用的Mifare類型卡,只儲存了使用者的卡ID。Mifare S70容量也不夠,遂使用CPU卡,FM1280,可達80KB的EEROM儲存。
在CSDN上花積分下載了一個C#讀取CPU卡的Demo,噁心的是不僅沒有源碼,而且互操作調用封裝的DLL,還指定使用他們的讀卡機,打廣告還帶賺我積分的。。
然後自己寫了一個,開源一下,供大家改改。。
時間緊迫,從不懂,到寫完這個也就兩星期,等有空了繼續寫個讀公交卡和銀行卡。。。

介紹

已實現兩種裝置的介面
Pcsc,使用CAR122U讀卡機(PcscCardReader)(github.com/danm-de/pcsc-sharp),只要實現PCSC驅動讀卡機都可以使用。
德卡D3D8 讀卡機 DeCardReader。
添加新讀卡機,只需要實現介面ICPUCardReader即可。介面很簡單,只要實現發送byte[],返回byte[]即可。

CpuCard類封常用操作命令。

目前只實現外部身分識別驗證,沒寫秘鑰操作相關。
建立二進位檔案,寫入檔案,讀取檔案,記錄日誌等。

遇到的坑最大二進位檔案:

文檔沒有說明二進位檔案最大可用多少大。建立一個大的二進位檔案時沒有報錯,但是寫入時報錯。
檢查文檔:當P1 參數的最高位不為1時,P1 P2 為欲寫入的檔案位移量,也就是說最大位移量為7FFF,32767個位元組,使用Unicode編碼,最多可寫16383個漢字

硬體資源釋放問題:

像這種硬體讀取完成的時候不知道什麼時候釋放資源合適,每次發送命令的時候開啟,發送完成後關閉,這樣不曉得慢是肯定了,而且可能會減少硬體壽命。
所以在裝置層發送命令後不關閉,在卡操作業務層關閉。當下次發送命令時,自動檢測裝置未開啟,則開啟裝置。

讀取二進位檔案問題:

因為寫入的可以指定二進位檔案的長度,但是讀取二進位檔案的時候,沒找到如何擷取二進位檔案的長度。

發現讀取會有提示如下
6Cxx 出錯 Le長度錯誤,實際長度是xx。
則讀取碰到6C後,修正此次讀取資料長度,繼續讀取。

參考檔案:

FMCOS專用技術手冊 (使用複旦微電子的卡)

測試裝置型號

ACR122U 德卡D8(即將實現)

測試CPU卡型號:

FM1216-137 FM1280

未實現功能

時間緊迫,目前沒用使用加密,線路保護功能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.