2014-11-08 80 views
1

有沒有人設法使用這種芯片使用超輕量級C卡進行相互認證? 我瞭解身份驗證程序,但查看芯片手冊中的命令集並嘗試了幾件事情,我認爲這實際上是不可能的,但是我認爲我會在放棄芯片組並重新使用CJS編碼器之前發佈此處驗證PN532 MiFare Ultralight C相互認證

在此先感謝

回答

0

是的,有可能具有Mifare超輕C.使用進行相互認證以下步驟:

第1步:發送開始認證命令。 (1A 00)到卡片

步驟2:卡片產生一個8字節隨機數RndB。該隨機數是用多樣化密鑰(用ek(RndB)表示)加密的DES/3DES,然後發送給終端。

步驟3終端對收到的ek(RndB)執行DES/3DES解密操作,從而檢索RndB。然後RndB左移8位(第一個字節移動到RndB的末尾),產生RndB'。現在終端本身產生一個8字節的隨機數RndA。該RndA與RndB'連接並使用DES/3DES解密(兩個塊的解密使用密碼塊鏈接(CBC)發送模式鏈接)。該令牌dk(RndA + RndB')被髮送到卡。

步驟4:卡對收到的令牌運行DES/3DES加密,從而獲得RndA + RndB'。該卡現在可以通過將其與通過在內部將原始RndB左移8位而獲得的RndB'進行比較來驗證發送的RndB'。成功的驗證證明卡和終端具有相同的祕密(密鑰)。如果驗證失敗,卡停止驗證過程並返回錯誤消息。由於該卡還接收到由終端產生的隨機數RndA,它可以在RndA上執行8位的左旋轉操作以獲得RndA',該RndA'再次被加密,導致ek(RndA')。這個令牌被髮送到終端。

步驟5:終端在接收到的ek(RndA')上運行DES/3DES解密並因此獲得RndA'用於與終端內部旋轉的RndA'比較。如果比較失敗,則終端退出該程序並可能暫停該卡。

STEP 6:卡套的驗證狀態爲「已驗證」

哪一部分給了你一個問題嗎?

+0

感謝您的回覆,我在其他地方讀過,它是可能的,經過數小時的檢查代碼解決了它,當我意識到我將一個讀取響應的字節數設置爲錯誤的值,所以離開數據在緩衝區中。一個簡單的錯誤導致了巨大的頭痛。 – watersa8 2017-03-27 16:01:40