⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sle4442.h

📁 西门子加密存储卡芯片4442在IC电话卡中的应用实例
💻 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 + -