簡體   English   中英

DESFire寫入數據命令失敗,出現917E(長度錯誤)

[英]DESFire write data command fails with 917E (length error)

我在使用MIFARE DESFire時遇到了一個非常奇怪的問題。 當我寫少量數據(例如11個字節)時,寫操作成功。 但是,當我嘗試寫入例如50字節時,響應為917E,這意味着命令中存在一些長度問題。

嘗試寫11個字節:

<-- 90 3D 00 00 12 01 000000 0B0000 1234567890AABBCC DDEEFF 00
--> 9100 (success)

嘗試寫50個字節:

<-- 90 3D 00 00 39 01 000000 320000 1234567890AABBCC DDEE1234567890AA
                                    BBCCDDEE12345678 90AABBCCDDEE1234
                                    567890AABBCCDDEE 1234567890AABBCC DDEE 00
--> 917E (length error)

該錯誤表示您的命令太長。 您可能使用DESFire EV1,它僅支持最多55個字節的包裝APDU長度。 因此,當以壓縮的本機模式打包到單個APDU中時,WriteData命令的最大數據長度為

55 - APDU Header - APDU Lc - File ID - Offset - Length - APDU Le =
55 - 4           - 1       - 1       - 3      - 3      - 1       = 42 bytes.

由於APDU包裝,這略小於WriteData命令本身的限制。 請注意,您仍然可以通過在多個DE​​SFire幀之間拆分數據(使用0xAF狀態和命令代碼)在一個WriteData命令中發送(更多)更多數據。

更新

DESFire EV1數據表中提到了55個字節。 vikky的實際測試顯示,這可能實際上是60個字節(導致最大數據長度為47個字節)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM