📄 sle4442.h
字号:
/*****************************************************
本函数库提供实现IC卡SLE4442全部功能的有关函数
ReadCm(): 读主存储器区
WriteCm(): 写主存储器区
ReadPm(): 读保护存储器区
WritePm(): 写保护数据区
ReadPsw(): 读加密存储器
CheckPsw(): 校验密码
SetPsw(): 修改加密存储器中的密码
各个入口参数请见下面的说明
*****************************************************/
//*************IC卡常数***************************
//此处为IC卡保护区00~03单元的值,用于识别卡,这四个字节是SLE4442的标识,
//如果 IC卡保护区00~03单元的值 不是这四个字节,表明该卡不是SLE4442卡
//或卡已损坏
#define IDENTIFY1 0xA2
#define IDENTIFY2 0x13
#define IDENTIFY3 0x10
#define IDENTIFY4 0x91
//************************************************
/*************IC卡引脚位定义**************************/
sbit RST = P1^2; //复位
sbit CLK = P1^1; //脉冲
sbit IO = P1^0; //数据
/***************************************************************
函数名称:ReadCm
功 能:从主存储器中读出数据块并存入ReadBuf中
输 入:unsigned char StarAddr --- 开始地址(0 - 255);
unsigned char ByteNum --- 要读出的字节数(1 - 256)
unsigned char *RecBuf --- 接收数据缓冲区
输 出: 0 --- 读成功
1 --- 表示无效卡或者卡损坏
****************************************************************/
extern unsigned char ReadCm(unsigned char StarAddr,unsigned char ByteNum,
unsigned char *RecBuf);
/****************************************************************
函数名称: WriteCm
功 能: 把存在WriteBuf中的ByteNum个字节的数据存入主存储器中
输 入: unsigned char StarAdr --- 开始地址(0 - 255)
unsigned char ByteNum --- 要写入的字节数(1 - 256)
unsigned char *WriteBuf --- 写入数据缓冲区
输 出: 0 --- 写成功
1 --- 表示无效卡或者卡损坏
注 意:要校验密钥正确,才能对卡的主存储器写入数据
*****************************************************************/
extern unsigned char WriteCm(unsigned char StarAdr,unsigned char ByteNum,
unsigned char *WriteBuf);
/******************************************************************
函数名称:ReadPm
功 能:读保护存储器,并把保护存储器的4字节的内容存在RecBuf中
输 入:unsigned char *RecBuf --- 接收数据缓冲区,长度为4个字节
输 出:0 --- 读成功
1 --- 表示无效卡或者卡损坏
*******************************************************************/
extern unsigned char ReadPm(unsigned char *RecBuf);
/********************************************************************
函数名称:WritePm
功 能:写保护数据存储器
输 入:unsigned char StartAdr --- 起始地址(0 - 31)
unsigned char ByteNum --- 写入的字节数(1 - 32)
unsigned char *WriteBuf --- 写入数据缓冲区
输 出:0 --- 写成功
1 --- 表示无效卡或者卡损坏
注 意: 首先校验密钥正确,才能对卡的护存储器写入数据,
其次写入的数据必须与卡中对应的数据相等才能写入
*********************************************************************/
extern unsigned char WritePm(unsigned char StartAdr,unsigned char ByteNum,
unsigned char *WriteBuf);
/**********************************************************************
函数名称:ReadPsw
功 能:读加密存储器
输 入:unsigned char *Psw --- 用于装读到的加密存储器内容,长度为4个字节
Psw第一字节: 错误计数器值
Psw第二字节到第四字节: 卡的密码值
输 出:0 --- 读成功
1 --- 表示无效卡或者卡损坏
注 意: 必须校验密码正确才能读到正确的密钥值,否则读到的密码值为00 00 00
***********************************************************************/
extern unsigned char ReadPsw(unsigned char *Psw);
/*********************************************************************
函数名称:CheckPsw
功 能:校验密码,把Psw中1,2,3字节的内容分别与加密存储器的1,2,3字节比较
输 入:unsigned char *Psw --- 待校验的密码值,长度为3个字节
输 出: 3: 核对密码成功
0: 卡已报废
1: 只剩一次校验机会,校验密码失败
2: 只剩二次校验机会,校验密码失败
4: 卡为无效卡或已损坏
**********************************************************************/
extern unsigned char CheckPsw(unsigned char *Psw);
/**********************************************************************
函数名称:SetPsw
功 能:修改加密存储器中的密码
输 入:NewPsw -- 新密码缓冲区,长度为3个字节
输 出:0 --- 读成功
1 --- 表示无效卡或者卡损坏
注 意: 必须校验密码成功后才能修改密码, 否则密码写不进卡中
***********************************************************************/
extern unsigned char SetPsw(unsigned char *NewPsw);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -