和Mifare卡通讯,CRC初始值0x6363为什么写入0x3D
时间: 2024-06-02 22:14:27 浏览: 10
Mifare卡的通讯过程中使用CRC校验,其中CRC的初始值为0x6363。在实际通讯中,每次计算CRC时,都需要将上一次计算得到的CRC值和当前的数据进行异或运算。因此,在第一次计算CRC时,需要给定一个初始值,这个初始值可以是任意值,但必须在通讯的双方都事先确定。为了避免与其他通讯协议的冲突,Mifare卡规定了初始值为0x6363。
在写入0x3D的情况下,可能是因为在某些应用中,需要对CRC进行特殊处理,例如在加密、认证等场景下。此时,可以使用不同的初始值来计算CRC,以达到特定的目的。但需要注意的是,这种做法可能会影响Mifare卡的兼容性和稳定性,因此应该谨慎使用。
相关问题
MIFARE Desfire EV1的指令有哪些,值是什么
MIFARE Desfire EV1是一种智能卡芯片,其支持的指令如下:
1. GET_VERSION (0x60):读取卡片的版本信息。
2. GET_UID (0x51):读取卡片的唯一标识符。
3. SELECT_APPLICATION (0x5A):选择卡片上的应用程序。
4. AUTHENTICATE (0x0A):对卡片进行身份验证。
5. READ_DATA (0xBD):读取卡片上的数据。
6. WRITE_DATA (0x3D):向卡片上写入数据。
7. GET_VALUE (0x6C):读取卡片上的值。
8. CREDIT (0x0C):向卡片上增加值。
9. DEBIT (0xDC):从卡片上减少值。
10. LIMITED_CREDIT (0x1C):限制从卡片上减少的值。
11. WRITE_RECORD (0x3B):向卡片上写入记录。
12. READ_RECORDS (0xBB):读取卡片上的记录。
13. CLEAR_RECORDS (0xEB):清除卡片上的记录。
14. COMMIT_TRANSACTION (0xC7):提交事务。
15. ABORT_TRANSACTION (0xA7):撤销事务。
这些指令的值可以在MIFARE Desfire EV1的官方文档中找到。
MIFARE Ultralight EV1的CRC计算方式
MIFARE Ultralight EV1标签的CRC计算采用的是CCITT标准的循环冗余校验算法,多项式为x^16 + x^12 + x^5 + 1。其计算过程如下:
1. 初始化CRC寄存器为0xFFFF;
2. 依次将需要计算CRC的每个字节与CRC寄存器进行异或;
3. 对异或后的结果进行8次循环左移,每次循环如果最高位为1,则将其与0x1021异或;
4. 重复步骤2和3,直到所有字节都被计算完毕;
5. 将CRC寄存器中的值取反,得到最终的CRC校验码。
需要注意的是,MIFARE Ultralight EV1标签中存储的数据都是按照LSB(Least Significant Bit)的方式存储,因此在计算CRC时需要按照LSB的方式进行处理。