原文傳送門:https://www.cnblogs.com/ivantang/p/3904025.html
M1卡介紹
?
M1卡是指菲利浦下屬子公司恩智浦出品的芯片縮寫,全稱為NXP Mifare1系列,常用的有S50及S70兩種型號,目前都有國產(chǎn)芯片與其兼容,屬于非接觸式IC卡。最為重要的優(yōu)點是可讀可寫并且安全性高的多功能卡。這些優(yōu)點與其自身的結(jié)構(gòu)密不可分。
?
主要指標(biāo)
容量為8K位EEPROM(Electrically Erasable Programmable Read-Only Memory,帶電可擦可編程只讀存儲器) 分為16個扇區(qū),每個扇區(qū)為4塊,每塊16個字節(jié),以塊為存取單位 每個扇區(qū)有獨立的一組密碼及訪問控制 每張卡有唯一序列號,為32位 具有防沖突機制,支持多卡操作 無電源,自帶天線,內(nèi)含加密控制邏輯和通訊邏輯電路 數(shù)據(jù)保存期為10年,可改寫10萬次,讀無限次 工作溫度:-20℃~50℃(溫度為90%) 工作頻率:13.56MHZ 通信速率:106KBPS 讀寫距離:10mm以內(nèi)(與讀寫器有關(guān)) ?
存儲結(jié)構(gòu)
1、M1卡分為16個扇區(qū),每個扇區(qū)4塊(塊0~3),共64塊,按塊號編址為0~63。第0扇區(qū)的塊0(即絕對地址0塊)用于存放廠商代碼,已經(jīng)固化,不可更改。其他各扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,用于存貯數(shù)據(jù);塊3為控制塊,存放密碼A、存取控制、密碼B。每個扇區(qū)的密碼和存取控制都是獨立的,可以根據(jù)實際需要設(shè)定各自的密碼及存取控制。存貯結(jié)構(gòu)如下表所示:
?
塊0
IC卡廠家信息
數(shù)據(jù)塊
0
扇區(qū)0?
塊1
數(shù)據(jù)塊
1
塊2
數(shù)據(jù)塊
2
塊3
密碼A???存取控制???密碼B
控制塊
3
? 塊0
數(shù)據(jù)塊
4
扇區(qū)1
塊1
數(shù)據(jù)塊
5
塊2
數(shù)據(jù)塊
6
塊3
密碼A???存取控制???密碼B
控制塊
7
∶
∶
∶
? 0
數(shù)據(jù)塊
60
扇區(qū)15?
1
數(shù)據(jù)塊
61
2
數(shù)據(jù)塊
62
3
密碼A????存取控制???密碼B
控制塊
63
?
2、第0扇區(qū)的塊0(即絕對地址0塊),它用于存放廠商代碼,已經(jīng)固化,不可更改。
3、每個扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,可用于存貯數(shù)據(jù)。
??數(shù)據(jù)塊可作兩種應(yīng)用:
? 用作一般的數(shù)據(jù)保存,可以進行讀、寫操作。
? 用作數(shù)據(jù)值,可以進行初始化值、加值、減值、讀值操作。
4、每個扇區(qū)的塊3為控制塊,包括了密碼A、存取控制、密碼B。具體結(jié)構(gòu)如下:
各區(qū)控制塊3?結(jié)構(gòu) 字節(jié)號 0?1?2?3?4?5 6?7?8?9 10?11?12?13?14?15? 控制值 FF?FF?FF?FF?FF?FF ?FF?07?80?69 FF?FF?FF?FF?FF?FF 說明? 密碼A(0~5字節(jié))? 存取控制(6~9字節(jié)) 密碼B(10~15字節(jié))
?
密碼A(6字節(jié))??存取控制(4字節(jié)) 密碼B(6字節(jié))?
5、每個扇區(qū)的密碼和存取控制都是獨立的,可以根據(jù)實際需要設(shè)定各自的密碼及存取控制。存取控制為4個字節(jié),共32位,扇區(qū)中的每個塊(包括數(shù)據(jù)塊和控制塊)的存取條件是由密碼和存取控制共同決定的,在存取控制中每個塊都有相應(yīng)的三個控制位,定義如下:
表 :控制位定義"CXxy"?(x=0~15扇區(qū); y=塊0,塊1,塊2) ?
塊0 C1x0 C2x0? C3x0? 用戶數(shù)據(jù)塊,(0區(qū)0塊除外)? 塊1 C1x1 C2x1 C3x1 用戶數(shù)據(jù)塊 塊2? C1x2 C2x2 C3x2? 用戶數(shù)據(jù)塊 塊3 C1x3 C2x3 C3x3 密匙存取控制塊
例如C1x0中的C代碼這是控制位,1代表第一位,0代表是塊0的控制位。
三個控制位以正和反兩種形式存在于存取控制字節(jié)中,決定了該塊的訪問權(quán)限(如進行減值操作必須驗證KEY A,進行加值操作必須驗證KEY B,等等)。三個控制位在存取控制字節(jié)中的位置
表:三個控制位在存取控制字節(jié)中的位置(注:"?_b"?表示取反)?
字節(jié)號?|? 位號 bit 7 6 5 4 3 2 1 0 字節(jié)6 C2x3_b C2x2_b C2x1_b C2x0_b C1x3_b C1x2_b? C1x1_b? C1x0_b? 字節(jié)7 C1x3? C1x2? C1x1? C1x0? C3x3_b? C3x2_b? C3x1_b? C3x0_b? 字節(jié)8 C3x3? C3x2? C3x1? C3x0? C2x3? C2x2? C2x1? C2x0? 字節(jié)9 BX7? BX6? BX5? BX4? BX3? BX2? BX1? BX0? 所屬塊 塊3控制位 塊2控制位 塊1控制位 塊0控制位 塊3控制位 塊2控制位 塊1控制位 塊0控制位
以塊0為例,對塊0的控制:
7
6
5
4
3
2
1
0
字節(jié)6
?
?
?
C20_b
?
?
?
C10_b
字節(jié)7
?
?
?
C10
?
?
?
C30_b
字節(jié)8
?
?
?
C30
?
?
?
C20
字節(jié)9
?
?
?
?
?
?
?
?
(?注:?C10_b表示C10取反?)
?
存取控制(4字節(jié),其中字節(jié)9為備用字節(jié))結(jié)構(gòu)如下所示:
7
6
5
4
3
2
1
0
字節(jié)6
C23_b
C22_b
C21_b
C20_b
C13_b
C12_b
C11_b
C10_b
字節(jié)7
C13
C12
C11
C10
C33_b
C32_b
C31_b
C30_b
字節(jié)8
C33
C32
C31
C30
C23
C22
C21
C20
字節(jié)9
?
?
?
?
?
?
?
?
?(?注:?_b表示取反?)
?
6、數(shù)據(jù)塊 (塊0、塊1、塊2)的存取控制如下:
?????????訪?問?條?件?(對數(shù)據(jù)塊?0、1、2)
C1X
C2X
C3X
?Read
?Write
Increment
Decrement, transfer,
Restore
0
0
0
KeyA|B
KeyA|B
KeyA|B
KeyA|B
0
1
0
KeyA|B
Never
Never
Never
1
0
0
KeyA|B
KeyB
Never
Never
1
1
0
KeyA|B
KeyB
KeyB
KeyA|B
0
0
1
KeyA|B
Never
Never
KeyA|B
0
1
1
KeyB
KeyB
Never
Never
1
0
1
KeyB
Never
Never
Never
1
1
1
Never
Never
Never
Never
(KeyA|B?表示密碼A或密碼B,Never表示任何條件下不能實現(xiàn))
?例如:當(dāng)塊0的存取控制位C10 C20 C30=1 0?0時,驗證密碼A或密碼B正確后可讀;驗證密碼B正確后可寫;不能進行加值、減值操作。
?
?7、控制塊( 塊3)的存取控制與數(shù)據(jù)塊 (塊0、1、2)不同,它的存取控制如下:
?
?
密碼A
存取控制
密碼B
C13
C23
C33
Read
Write
Read
Write
Read
Write
0
0
0
Never
KeyA|B
KeyA|B
Never
KeyA|B
KeyA|B
0
1
0
Never
Never
KeyA|B
Never
KeyA|B
Never
1
0
0
Never
KeyB
KeyA|B
Never
Never
KeyB
1
1
0
Never
Never
KeyA|B
Never
Never
Never
0
0
1
Never
KeyA|B
KeyA|B
KeyA|B
KeyA|B
KeyA|B
0
1
1
Never
KeyB
KeyA|B
KeyB
Never
KeyB
1
0
1
Never
Never
KeyA|B
KeyB
Never
Never
1
1
1
Never
Never
KeyA|B
Never
Never
Never
例如:當(dāng)塊3的存取控制位C13 C23 C33=1 0?0時,表示:
密碼A: ? ?不可讀,驗證KEYB正確后可寫(更改)。
存取控制:不可寫,驗證KEYA或KEYB正確后可讀。
密碼B: ? ?不可讀,驗證KEYB正確后可寫。
?
?
工作原理
卡片的電氣部分只由一個天線和ASIC(Application Specific Integrated Circuit)組成。
天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。
ASIC:卡片的ASIC由一個高速(106KB波特率)的RF接口,一個控制單元和一個8K位EEPROM(Electrically Erasable Programmable Read-Only Memory,帶電可擦可編程只讀存儲器)組成。
工作原理:讀寫器向M1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與訊寫器發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個電容的另一端,接有一個單向?qū)ǖ碾娮颖?#xff0c;將電容內(nèi)的電荷送到另一個電容內(nèi)儲存,當(dāng)所積累的電荷達到2V時,此電容可做為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。
?
復(fù)位應(yīng)答(Answer to request)
M1射頻卡的通訊協(xié)議和通訊波特率是定義好的,當(dāng)有卡片進入讀寫器的操作范圍時,讀寫器以特定的協(xié)議與它通訊,從而確定該卡是否為M1射頻卡,即驗證卡片的卡型。
?
防沖突機制 (Anticollision Loop)
當(dāng)有多張卡進入讀寫器操作范圍時,防沖突機制會從其中選擇一張進行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。
?
選擇卡片(Select Tag)
選擇被選中的卡的序列號,并同時返回卡的容量代碼。
?
三次互相確認(3 Pass Authentication)
選定要處理的卡片之后,讀寫器就確定要訪問的扇區(qū)號,并對該扇區(qū)密碼進行密碼校驗,在三次相互認證之后就可以通過加密流進行通訊。(在選擇另一扇區(qū)時,則必須進行另一扇區(qū)密碼校驗。)
?
對數(shù)據(jù)塊的操作
讀 (Read):讀一個塊;
寫 (Write):寫一個塊;
加(Increment):對數(shù)值塊進行加值;
減(Decrement):對數(shù)值塊進行減值;
存儲(Restore):將塊中的內(nèi)容存到數(shù)據(jù)寄存器中;
傳輸(Transfer):將數(shù)據(jù)寄存器中的內(nèi)容寫入塊中;
中止(Halt):將卡置于暫停工作狀態(tài);
?
?
M1卡運作機理
連接讀寫器→尋卡→識別卡(獲取卡序列號)→從多卡中選一張卡→向卡中緩沖區(qū)裝載密碼→驗證密碼→進行讀寫→關(guān)閉連接
即(代碼說明)
Open_USB→rf_request→rf_anticoll→rf_select→rf_load_key→rf_authentication→(/a_hex)→rf_read/rf_write→(hex_a)→Close_USB
如果概括來說的話,主要也就四部分:開關(guān)連接、尋卡、驗證密碼、讀取。
?
基本操作規(guī)則
(1)程序開始,調(diào)用rf_init函數(shù)初始化串口。
(2)尋卡,調(diào)用rf_card;
? ? ? ??相當(dāng)于連續(xù)調(diào)用三個函數(shù):
? ?rf_request
?rf_anticoll
? ? ?rf_select
? ?注:調(diào)用高級函數(shù)對卡進行操作時,無需此步驟。
(3)對單個扇區(qū)操作,順次執(zhí)行A~D;
? ?對多個扇區(qū)操作,循環(huán)執(zhí)行A~E;
? ?A、選定要操作的扇區(qū);
? ?B、裝載密碼,調(diào)用rf_load_key;
?C、驗證密碼,調(diào)用rf_authentication;
?D、進行操作,包括讀寫及值操作。
?E、調(diào)用rf_halt。
(4)關(guān)閉串口,調(diào)用rf_exit。程序正常退出或因錯誤退出之前,要使用函數(shù);否則再次執(zhí)行初始化串口時將出錯。
?
M1卡功能模式
1.尋卡模式:
尋卡模式分三種情況:IDLE模式、ALL模式及指定卡模式(0,1,2 均是int類型,是方法參數(shù),下同)。
?????0——表示IDLE模式,一次只對一張卡操作;
?????1——表示ALL模式,一次可對多張卡操作;
?????2——表示指定卡模式,只對序列號等于snr的卡操作(高級函數(shù)才有)【不常用】
也就是說,我們一次也可以同時操作多張卡。
對于多卡操作,其實際真正執(zhí)行操作的還是一張卡。讀寫器能識別多張卡的序列號(但注意識別出的順序是不定的,并且最多也就能識別4張卡,因為卡疊放的厚度太厚,會超出讀寫器的識別范圍),并一一進行操作。
所以由此看出,多卡操作的意義并不大。但我建議大家還是設(shè)置為1好了。
?
2.密碼驗證模式:
?????0——KEYSET0的KEYA
?????4——KEYSET0的KEYB
M1卡可以在驗證密碼時選擇密碼類型(A/B)?!酒鋵峂1卡有3套密碼(KEYSET0、KEYSET1、KEYSET2),共6個密碼(用0~2、4~6來表示這六個密碼),目的是為了適應(yīng)不同讀寫器。而這里我們用的是KEYSET0的2個密碼】
?
M1卡密碼機制
這可以說是M1卡的精髓了,也是M1卡最為復(fù)雜的地方,希望大家耐心看完。
(請先看明白M1卡結(jié)構(gòu))如上所說,在存取控制中每個塊都有相應(yīng)的三個控制位,它們的定義如下:
?????塊0:???C10???C20???C30
?????塊1:???C11???C21???C31
?????塊2:???C12???C22???C32
?????塊3:???C13???C23???C33
一個扇區(qū)的三個數(shù)據(jù)塊,我們可以利用密碼機制對它們分別進行權(quán)限控制。數(shù)據(jù)塊(塊0、塊1、塊2)的存取控制如下:
?
例如:當(dāng)塊0的存取控制位C10 C20 C30=100時,驗證密碼A或密碼B正確后可讀;驗證密碼B正確后可寫;不能進行加值、減值操作。
那么M1卡修改密碼的方法是rf_changeb3
參數(shù):
?????icdev:通訊設(shè)備標(biāo)識符
?????_SecNr:扇區(qū)號(0~15)
? ? ?_KeyA:密碼A
?????_B0:塊0控制字,低3位(D2D1D0)對應(yīng)C10、C20、C30
?????_B1:塊1控制字,低3位(D2D1D0)對應(yīng)C11、C21、C31
?????_B2:塊2控制字,低3位(D2D1D0)對應(yīng)C12、C22、C32
?????_B3:塊3控制字,低3位(D2D1D0)對應(yīng)C13、C23、C33
?????_Bk:保留參數(shù),取值為0
?????_KeyB:密碼B
返?回:成功則返回?0
由上我們看出_B0、_B1、_B2、_B3分別控制塊0、塊1、塊2、塊3。
由圖我們可知_B0、_B1、_B2的可取值為 0、10、100、110、1、11、101、111。
這里大家一定要注意一點:
不能裝載密碼到M1卡某一扇區(qū)后再更改那扇區(qū)的密碼(最好連接完讀寫器后直接更改密碼),否則更改密碼會失敗而凍結(jié)扇區(qū)。如果不慎這樣了,解決的辦法是完成一次讀寫操作,再更改密碼。
控制塊(塊3)的存取控制與數(shù)據(jù)塊(塊0、1、2)不同,它的存取控制如下:
_B3的取值與_B0相同。
?
存取控制舉例
例1:塊3的初始化值為: KeyA=A0、A1、A2、A3、A4、A5 控制塊=FF、07、80、69 KeyB=B0、B1、B2、B3、B4、B5
字節(jié) ?Bit?7 ?Bit?6 Bit?5 ? Bit?4 ?Bit?3 ?Bit?2 ?Bit?1 ?Bit?0 權(quán)限 ?二進制
Byte6 C2X3_b C2X2_b C2X1_b C2X0_b C1X3_b C1X2_b C1X1_b C1X0_b FF 1 1 1 1 1 1 1 1 Byte?7 C1X3 C1X2 C1X1 C1X0 C3X3_b C3X2_b C3X1_b C3X0_b 07 0 0 0 0 0 1 1 1 Byte?8 C3X3 C3X2 C3X1 C3X0 C2X3 C2X2 C2X1 C2X0 80 1 0 0 0 0 0 0 0 Byte?9 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 69 0 1 1 0 1 0 0 1
得出存取控制位如下:
塊1 C1X1 C2X1 C3X1 0 0 0 塊2 C1X2? C2X2 C3X2 0 0 0 塊3 C1X3 C2X3? C3X3 0 0 1
例2:塊3的初始化值為:
KeyA=A0、A1、A2、A3、A4、A5
控制塊=08、77、8F、00
KeyB=B0、B1、B2、B3、B4、B5
字節(jié) Bit?7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 權(quán)限 ?二進制
Byte?6 C2X3_b C2X2_b C2X1_b C2X0_b C1X3_b C1X2_b C1X1_b C1X0_b 08 0 0 0 0 1 0 0 0 Byte?7 C1X3 C1X2 C1X1 C1X0 C3X3_b C3X2_b C3X1_b C3X0_b 77 0 1 1 1 0 1 1 1 Byte?8 C3X3 C3X2 C3X1 C3X0 C2X3 C2X2 C2X1 C2X0 8F 1 0 0 0 1 1 1 1 Byte?9 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 00 0 0 0 0 0 0 0 0
? 得出存取控制位如下:
塊1 C1X1 C2X1 C3X1 1 1 0 塊2 C1X2? C2X2 C3X2 1 1 0 塊3 C1X3 C2X3? C3X3 0 1 1
M1卡使用注意事項
快速識別EM卡,HID卡和MF卡 如果是一面平,一面代坡并且底面有一排數(shù)字的為EM卡,剩下兩張應(yīng)該是平的,其中一張應(yīng)該是另一張的二倍厚,那么厚的那張是HID卡,薄的是MF卡。 M1卡寫數(shù)據(jù)是直接向控制塊里寫,但能寫的前提是扇區(qū)的密碼已得到確認.向控制塊中寫數(shù)據(jù)時,首先要理解控制塊中控制位的用途.避免寫入無效數(shù)據(jù)后,扇區(qū)被鎖死。 每個控制塊共16個字節(jié),前6個和后6個字節(jié)是密碼KeyA和KeyB,中間4個字節(jié)是控制位.如果寫錯控制位,即使你知道KeyA/KeyB,也再也不能訪問這個扇區(qū)了。
所謂三次互相認證是只在進行真正的數(shù)據(jù)交換前,卡和讀寫器之間會傳輸一些隨機產(chǎn)生的密鑰,在確認這一次通訊的密鑰后,真正的數(shù)據(jù)才會使用這些密鑰加密后進行通訊.密鑰產(chǎn)生過程就是三次認證.由于每一次密鑰不同,所以即使是進行相同數(shù)據(jù)的通訊,在卡和讀卡器之間的每次通訊信號都是不同的,沒法捕捉。這三次認證跟密鑰KEYA或KEYB是有關(guān)的。的確需要事先設(shè)定讀卡機和卡片的密鑰一致才能認證。認證時通過隨機數(shù)和KEYA或KEYB產(chǎn)生一個后續(xù)通信需要的流加密種子,當(dāng)然讀卡機和卡片的加密算法和該種子需保持一致。
MF1卡常見問題及處理建議:
① 盲目操作:造成某些區(qū)塊誤操作被鎖死不能再使用。應(yīng)當(dāng)仔細參考表3表5的控制權(quán)限后,予先得出操作后的結(jié)果是否適合使用要求,并且列出操作順序表單再操作。最好授權(quán)程序員對塊3的設(shè)置作專人操作。 ② 丟失密碼:再讀寫時造成密碼認證出錯而不能訪問卡。特別要求在對MF卡進行塊3編程操作時,必須及時記錄相關(guān)卡號的控制值,KeyA,KeyB等,而且應(yīng)當(dāng)有專人管理密碼檔案。 ③ 錯誤設(shè)置:對MF1卡的塊3控制塊了解不透徹,錯誤的理解造成設(shè)置造成錯誤的設(shè)置。依照表2可知,目前Mf1卡的控制塊僅只有8種數(shù)據(jù)塊訪問控制權(quán)限和8種控制塊設(shè)置權(quán)限,超出這16種權(quán)限的其他代碼組合,將直接引起錯誤設(shè)置而使卡片報廢! ④ 極端權(quán)限:當(dāng)塊3的存取控制位C13 C23 C33 = 110或者111時,稱為極端權(quán)限。除特殊應(yīng)用外一般不被使用!啟用前認真權(quán)衡對密碼讀寫,存取控制的鎖死是否必要,否則,數(shù)據(jù)加密后即使有密碼也無法讀取被鎖死的數(shù)據(jù)區(qū)塊(看不見)! ⑤ 設(shè)備低劣:低劣的設(shè)備將直接影響卡的讀寫性能。對MF卡進行塊3編程操作的設(shè)備,特別要求其性能必須十分可靠,運行十分穩(wěn)定!建議選用由飛利浦公司原裝讀寫模塊構(gòu)建的知名讀寫機具! ⑥ 編程干擾:在對塊3進行編程操作時,不可以有任何的‘IO‘中斷或打擾!包括同時運行兩個以上程序干擾甚至PC機不良的開關(guān)電源紋波干擾等,否則,不成功的寫操作將造成某個扇區(qū)被鎖死的現(xiàn)象,致使該扇區(qū)再次訪問時出錯而報廢。 ⑦ 數(shù)據(jù)出錯:在臨界距離點上讀卡和寫卡造成的。通常的讀卡,特別是寫卡,應(yīng)該避免在臨界狀態(tài)(剛能讀卡的距離)讀卡。因為臨界狀態(tài)下的數(shù)據(jù)傳送是很不穩(wěn)定的!容易引起讀寫出錯! ⑧ 人為失誤:例如,密碼加載操作失誤,誤將KeyA加載為KeyB;或者是誤將其他制卡廠約定的初始密碼值如a0a1a2a3a4a5,b0b1b2b3b4b5加載到本公司生產(chǎn)的MF1卡內(nèi);或者在初始狀態(tài)下(密碼A=000000000000【隱藏狀態(tài),實際為ffffffffffff】,控制位=FF 07 80 69,密碼B=ffffffffffff【可見】)若不經(jīng)意地將KeyA=000000000000 刪除后又重新輸入12個‘0‘,并加載了它!這時無意中已將KeyA原來12個隱藏的‘f‘,修改成了12個‘0‘,其后果可想而知! ⑨ 卡片失效:讀寫均無數(shù)據(jù)傳送,讀寫器報告‘尋卡錯誤‘!卡片被超標(biāo)扭曲,彎曲而造成內(nèi)電路斷裂。 ⑩ 讀寫距離過近:與用戶使用的讀寫器性能有關(guān)。標(biāo)準(zhǔn)型MF1卡的讀寫距離可達10cm(在飛利浦公司的標(biāo)準(zhǔn)讀寫機具上測試的最大距離),國產(chǎn)知名品牌讀寫器一般可達5-10cm。尺寸較小的匙扣卡,其讀寫距離當(dāng)然比標(biāo)準(zhǔn)卡近許多,但只要可靠的讀寫距離≥5~10mm以上,一般不會影響正常使用!
?
實際應(yīng)用
M1 卡的格式化方法:
例如,M1 卡的某一扇區(qū)的塊3數(shù)據(jù)為:
KEYA:FFFFFFFFFFFF
控制值:FF078069
KEYB:FFFFFFFFFFFF
現(xiàn)要格式化卡(假如驗證密碼A)為:
KEYA 輸入 FFFFFFFFFFFF
KEYB 輸入 123456781234
則可以格式化
KEYA 輸入 123456781234
KEYB 輸入 FFFFFFFFFFFF
也可以格式化
即先用輸入的KEYA與卡中控制塊的KEYA比較,驗證失敗再用輸入的KEYB與卡中控制塊的KEYB比較,驗證失敗則失敗,否則成功。
分類: Others
好文要頂 關(guān)注我 收藏該文
ivantang 關(guān)注 - 3 粉絲 - 6
+加關(guān)注
? 上一篇: Windows 數(shù)據(jù)類型 ? 下一篇: services 文件
</div><div class="postDesc">posted @ <span id="post-date">2014-08-11 09:35</span> <a href="https://www.cnblogs.com/ivantang/">ivantang</a> 閱讀(<span id="post_view_count">369</span>) 評論(<span id="post_comment_count">0</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=3904025" rel="nofollow">編輯</a> <a href="#" onclick="AddToWz(3904025);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=188022,cb_entryId=3904025,cb_blogApp=currentBlogApp,cb_blogUserGuid='33d8fd86-58ec-e311-8d02-90b11c0b17d6',cb_entryCreatedDate='2014/8/11 9:35:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;</script>