关于射频RFID-RC522的使用和见解
时间:10-02
整理:3721RD
点击:
/******************************************************************************************
* 函数名称 :char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)
* 功能描述 :验证卡片密码
* 输入参数 :auth_mode[IN]: 密码验证模式
* 0x60 = 验证A密钥
* 0x61 = 验证B密钥
* addr[IN]:块地址(0~63)
* pKey[IN]:密码
* pSnr[IN]:卡片序列号,4字节
* 返回值 :成功返回MI_OK
* 作者 :LXY
* 创建日期 : 2013-12
char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)
{
char status;
unsigned int unLen;
unsigned char i,ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = auth_mode;
ucComMF522Buf[1] = addr; //读第几块
for (i=0; i<6; i++)
{ ucComMF522Buf[i+2] = *(pKey+i); } //存放密码
for (i=0; i<6; i++)
{ ucComMF522Buf[i+8] = *(pSnr+i); }
status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);
ceshi=ReadRawRC(Status2Reg);
if ((status != MI_OK)|| (!(ReadRawRC(Status2Reg) & 0x08) ) ) // //问题:取消掉这个寄存器的位检测可以吗?我测试过Status2Reg寄存器的值始终为0x00,没有执行成功MFAuthent命令,所以没有置位,导致我的IC卡认证不成功,我删掉|| (!(ReadRawRC(Status2Reg) & 0x08) ) 这句后就正常了,请问这个寄存器具体什么作用,我不认证了,对安全上有什么影响吗?。
{
status = (char)MI_ERR;
}
return status;
}
* 函数名称 :char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)
* 功能描述 :验证卡片密码
* 输入参数 :auth_mode[IN]: 密码验证模式
* 0x60 = 验证A密钥
* 0x61 = 验证B密钥
* addr[IN]:块地址(0~63)
* pKey[IN]:密码
* pSnr[IN]:卡片序列号,4字节
* 返回值 :成功返回MI_OK
* 作者 :LXY
* 创建日期 : 2013-12
char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)
{
char status;
unsigned int unLen;
unsigned char i,ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = auth_mode;
ucComMF522Buf[1] = addr; //读第几块
for (i=0; i<6; i++)
{ ucComMF522Buf[i+2] = *(pKey+i); } //存放密码
for (i=0; i<6; i++)
{ ucComMF522Buf[i+8] = *(pSnr+i); }
status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);
ceshi=ReadRawRC(Status2Reg);
if ((status != MI_OK)|| (!(ReadRawRC(Status2Reg) & 0x08) ) ) // //问题:取消掉这个寄存器的位检测可以吗?我测试过Status2Reg寄存器的值始终为0x00,没有执行成功MFAuthent命令,所以没有置位,导致我的IC卡认证不成功,我删掉|| (!(ReadRawRC(Status2Reg) & 0x08) ) 这句后就正常了,请问这个寄存器具体什么作用,我不认证了,对安全上有什么影响吗?。
{
status = (char)MI_ERR;
}
return status;
}
问题就是密匙验证不成功,我这个步骤的具体流程什么意思啊,我能取消掉这个流程吗?
有修改扇区密码的函数么?