讀取二代身份證號,做個記錄

2021-08-03 09:26:41 字數 1692 閱讀 9079

**

最近用rc523讀身份證id,經過幾天摸索和參考網上資料,終於所成功了,特發此貼給有需要的朋友,但願能少走彎路

rc523 暫存器配置:

rcsetreg(jreg_txask, 0x00);

rcsetreg(jreg_control, 0x10);

rcsetreg(jreg_txmode, 0x03);

rcsetreg(jreg_rxmode, 0x0b);

rcsetreg(jreg_typeb, 0x03);

rcsetreg(jreg_demod, 0x4d);

rcsetreg(jreg_gsn, 0xff);

rcsetreg(jreg_cwgsp, 0x3f);

rcsetreg(jreg_modgsp, 0x18);

rcsetreg(jreg_rxthreshold, 0x4d);

rcsetreg(jreg_modwidth,0x68);

身份證讀卡器的程式流程如下:

先傳送0×05,0×00,0×00詢卡命令後,身份證返回12位元組卡型別**,不同身份證返回的資料不一樣。比如對兩個身份證傳送詢卡命令後分別返回

0×50 0×00 0×00 0×00 0×00 0xd1 0×03 0×86 0×0c 0×00 0×80 0×80

0×50 0×00 0×00 0×00 0×00 0xd1 0×03 0×86 0×07 0×00 0×80 0×90

詢卡成功後,傳送select命令:0×1d 0×00 0×00 0×00 0×00 0×00 0×08 0×01 0×08 對二代身份證進行選卡操作。這時身份證返回的第乙個位元組應該等於select命令的最後乙個位元組0×08,根據這個條件來判斷select命令是否操作成功。

最後傳送guid命令:0×00 0×36 0×00 0×00 0×08,身份證會返回10位元組資料,其中前8位元組就是身份證的唯一id,後兩位元組是0×90 0×00。可以用後兩位元組來判斷得到的是否是身份證id。

** 二代身份證uid讀取測試   二代證是應答標準的reqb指令的,但attrib指令是非標的,

二代證的唯一uid可以通過下面的步驟簡單讀取,

1. pcd傳送reqb命令:  0x05 0x00 0x00  二代證收到後會傳送atqb(12 bytes)應答。  例:50  00  00  00  00  d1  03  86  0c  00  80  80   

2.pcd傳送非標attrib命令  1d  00  00  00  00  00  08  01  08   二代證返回應答:08 //這裡返回08不能認為是錯誤的,iso14443標準返回為00

3.pcd傳送讀取uid命令    00  36  00  00  08   二代證返回應答:xx xx xx xx xx xx xx xx 90  00   

sent bits:     05  00  00   

received bits: 50  00  00  00  00  d1  03  86  0c  00  80  80   

sent bits:     1d  00  00  00  00  00  08  01  08   

received bits: 08   

sent bits:     00  36  00  00  08   

received bits: xx xx xx xx xx xx xx xx 90  00

身份證號驗證

原文 身份證號驗證 public static boolean isidnumber string idnumber 定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpression 1 9 d 18 19 20 d 0 1 9 10 11 ...

身份證號驗證

身份證號組成 17位數字 1位校驗碼 位址碼 前六位 出生日期碼 第七位至第十位 順序碼 第十五位至十七位 對同年同月同日生的人便定的順序號,順序號奇數為男生,偶數為女生 檢驗碼 第十八位 0 9 x var acity function iscarid sid d x i.test sid ret...

身份證號的檢測

ddddddyyyymmddxxsp共18位 公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。2 位址碼 表示編碼物件常住戶口所在縣 市 旗 區 的行政區劃 按gb t2260的規定執行。3 出...