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

📄 smartcarddlg.cpp

📁 智能卡密钥加密
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		//读记录 DDF1.DF04.EF05.11(记录标志0x8A)(用户卡)       医疗证号
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x0B\x04\x11", cmdlen);
		sw1sw2 = SendCmd(theApp.icdev, CardSet_User, cmd,cmdlen, resp, &resplen);
		
		if (sw1sw2 != 0x9000)
		{
			AfxMessageBox("读取医疗证号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(card_num, resp+2, resplen-2);
			
			card_num[resplen-2] = 0x00;
			
			m_cardno.Format("%s",card_num);
		}
		
		//读记录 DDF1.DF04.EF05.12(记录标志0x8B)(用户卡)        基本医疗保险个人账号
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x0C\x04\x0C", cmdlen);
		sw1sw2 = SendCmd(theApp.icdev, CardSet_User, cmd,cmdlen, resp, &resplen);
		
		if (sw1sw2 != 0x9000)
		{
			AfxMessageBox("读取电脑号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(pc_num, resp+2, resplen-2);
			
			pc_num[resplen-2] = 0x00;
			
			m_pcno.Format("%s",pc_num);
		}
		
	}
	else if(theApp.m_readerType == 2)                              //选择的是明华读卡器
	{
		//用户卡复位
		ST = ICC_Reader_PowerOn(theApp.HandleReader1, cardset_user, resp);
		
		if (ST < 0)
		{
			AfxMessageBox("卡片复位失败");
		}
		
		//============================读数据====================================
		
		//选文件MF (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件MF失败");
		}
		
		//选文件DDF1 (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xDD\xF1", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DDF1失败");
		}
		
		//选文件EF05 (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件EF05失败");
		}
		
		//读记录 DDF1.EF05.05(用户卡)      发卡日期
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x05\x04\x06", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取发卡日期失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(date,resp+2,resplength-2);
			
			HexToAscii(date,date_asc,resplength-2);
			
			date_asc[(resplength-2)*2] = 0x00;
			
			m_date.Format("%s",date_asc);
		}
		
		//选文件MF (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件MF失败");
		}
		
		//选文件DDF1(用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DDF1失败");
		}
		
		//选文件EF06
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x06", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件EF06失败");
		}
		
		//读记录 DDF1.EF06.02(用户卡)      姓名
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x02\x04\x20", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if(SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取姓名失败");
		}
        else
		{
			memcpy(name,resp+2,resplength-2);
			
			name[resplength-2] = 0x00;
			
			m_name.Format("%s",name);
		}
		
		
		//读记录 DDF1.EF06.03(用户卡)      性别
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x03\x04\x03", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取姓名失败");
		}
		else
		{
			memcpy(sex,resp+2,resplength-2);
			
			if(sex[0x00] == 0x31)
			{
				m_sex.Format("%s","男");			
			}
			
			else if(sex[0x00] == 0x32)
			{
				m_sex.Format("%s","女");
			}
		}
		
		//读记录 DDF1.EF06.01(用户卡)      公民身份号码
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x01\x04\x14", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取身份证号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(id,resp+2,resplength-2);
			
			id[resplength-2] = 0x00;
			
			m_id.Format("%s",id);
		}
		
		//============================读数据====================================
		//选文件MF (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件MF失败");
		}
		
		//选文件DDF1(用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DDF1失败");
		}
		
		//用户卡校验密码 (用户卡)
		cmdlen = 0x08;
		memcpy(cmd, "\x00\x20\x00\x00\x03\x12\x34\x56", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			switch(SW1SW2) 
			{
			case 0x63c3:
				AfxMessageBox("还有三次重新输入密码机会");
				break;
			case 0x63c2:
				AfxMessageBox("还有二次重新输入密码机会");
				break;
			case 0x63c1:
				AfxMessageBox("还有一次重新输入密码机会");
				break;
			case 0x63c0:
				AfxMessageBox("再输入错误认证会导致锁定");
				break;
			default:
				AfxMessageBox("认证锁定");
			}
		}
		
		//选文件DF04
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xDF\x04", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DF04失败");
		}
		
		//选文件EF05
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件EF05失败");
		}
		
		//读记录 DDF1.DF04.EF05.11(记录标志0x8A)(用户卡)       医疗证号
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x0B\x04\x11", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取医疗证号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(card_num, resp+2, resplength-2);
			
			card_num[resplength-2] = 0x00;
			
			m_cardno.Format("%s",card_num);
		}
		
		//读记录 DDF1.DF04.EF05.12(记录标志0x8B)(用户卡)        基本医疗保险个人账号
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x0C\x04\x0C", cmdlen);
		SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取电脑号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(pc_num, resp+2, resplength-2);
			
			pc_num[resplength-2] = 0x00;
			
			m_pcno.Format("%s",pc_num);
		}
		
	}
	
	else if(theApp.m_readerType == 3)                              //选择的是明华读卡器
	{
		//用户卡复位
		ST = icc_reader_PowerOn(theApp.HandleReader2, cardset_User, resp);
		
		if (ST < 0)
		{
			AfxMessageBox("卡片复位失败");
		}
		
		//============================读数据====================================
		
		//选文件MF (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件MF失败");
		}
		
		//选文件DDF1 (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xDD\xF1", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DDF1失败");
		}
		
		//选文件EF05 (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件EF05失败");
		}
		
		//读记录 DDF1.EF05.05(用户卡)      发卡日期
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x05\x04\x06", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取发卡日期失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(date,resp+2,resplength-2);
			
			HexToAscii(date,date_asc,resplength-2);
			
			date_asc[(resplength-2)*2] = 0x00;
			
			m_date.Format("%s",date_asc);
		}
		
		//选文件MF (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件MF失败");
		}
		
		//选文件DDF1(用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DDF1失败");
		}
		
		//选文件EF06
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x06", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件EF06失败");
		}
		
		//读记录 DDF1.EF06.02(用户卡)      姓名
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x02\x04\x20", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if(SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取姓名失败");
		}
        else
		{
			memcpy(name,resp+2,resplength-2);
			
			name[resplength-2] = 0x00;
			
			m_name.Format("%s",name);
		}
		
		
		//读记录 DDF1.EF06.03(用户卡)      性别
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x03\x04\x03", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取姓名失败");
		}
		else
		{
			memcpy(sex,resp+2,resplength-2);
			
			if(sex[0x00] == 0x31)
			{
				m_sex.Format("%s","男");			
			}
			
			else if(sex[0x00] == 0x32)
			{
				m_sex.Format("%s","女");
			}
		}
		
		//读记录 DDF1.EF06.01(用户卡)      公民身份号码
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x01\x04\x14", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取身份证号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(id,resp+2,resplength-2);
			
			id[resplength-2] = 0x00;
			
			m_id.Format("%s",id);
		}
		
		//============================读数据====================================
		//选文件MF (用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件MF失败");
		}
		
		//选文件DDF1(用户卡)
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DDF1失败");
		}
		
		//用户卡校验密码 (用户卡)
		cmdlen = 0x08;
		memcpy(cmd, "\x00\x20\x00\x00\x03\x12\x34\x56", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		if (SW1SW2 != 0x9000)
		{
			switch(SW1SW2) 
			{
			case 0x63c3:
				AfxMessageBox("还有三次重新输入密码机会");
				break;
			case 0x63c2:
				AfxMessageBox("还有二次重新输入密码机会");
				break;
			case 0x63c1:
				AfxMessageBox("还有一次重新输入密码机会");
				break;
			case 0x63c0:
				AfxMessageBox("再输入错误认证会导致锁定");
				break;
			default:
				AfxMessageBox("认证锁定");
			}
		}
		
		//选文件DF04
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xDF\x04", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件DF04失败");
		}
		
		//选文件EF05
		cmdlen = 0x07;
		memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("选择文件EF05失败");
		}
		
		//读记录 DDF1.DF04.EF05.11(记录标志0x8A)(用户卡)       医疗证号
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x0B\x04\x11", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取医疗证号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(card_num, resp+2, resplength-2);
			
			card_num[resplength-2] = 0x00;
			
			m_cardno.Format("%s",card_num);
		}
		
		//读记录 DDF1.DF04.EF05.12(记录标志0x8B)(用户卡)        基本医疗保险个人账号
		cmdlen = 0x05;
		memcpy(cmd, "\x00\xB2\x0C\x04\x0C", cmdlen);
		SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
		
		if (SW1SW2 != 0x9000)
		{
			AfxMessageBox("读取电脑号失败");
		}
		
		else
		{
			//获得读出的数据
			memcpy(pc_num, resp+2, resplength-2);
			
			pc_num[resplength-2] = 0x00;
			
			m_pcno.Format("%s",pc_num);
		}
		
	}
	
    UpdateData(FALSE);
}

void CSmartcardDlg::OnButton4()
{
     CCpu dlg;

	 dlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -