**
最近用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 出...