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

📄 身份证效检位.txt

📁 身份证认证的算法
💻 TXT
字号:
/********************************************************
模块名称:将15位的身份证转换成18位的身份证?输入参数:  
           类型         变量名          作用
		  char *		sSfz15;
输出参数:  
           类型         变量名          作用
		  char * 		sSfz18;
全局变量: 
           类型			名称            作用
数据库表:
模块简述: 
        	  
编写人  :熊晟华 
编写单位:厦门建行信息技术部
日  期  :2002/08/31 
修改人  :
修改单位:
日  期  :
*********************************************************/

int gh_sfz18to15(sSfz18,sSfz15)
char * sSfz18;
char * sSfz15;
{
    char sBuf[29];
    char sBuf1[20];
    int  iYear;
    int iRet;
    strncpy(sBuf,sSfz18,6);
    sBuf[6]='\0';
    strncpy(sBuf1,sSfz18+8,9);
    sBuf1[9]='\0';
	sprintf(sSfz15,"%s%s",sBuf,sBuf1);
	return(0);
}

/********************************************************
模块名称:将15位的身份证转换成18位的身份证?输入参数:  
           类型         变量名          作用
		  char *		sSfz15;
输出参数:  
           类型         变量名          作用
		  char * 		sSfz18;
全局变量: 
           类型			名称            作用
数据库表:
模块简述: 
        	  
编写人  :熊晟华 
编写单位:厦门建行信息技术部
日  期  :2002/08/31 
修改人  :				日  期  :		修改说明
姚雄杰					2003-1-13		去掉原有公函调用
*********************************************************/
int gh_sfz15to18(sSfz15,sSfz18)
char * sSfz15;
char * sSfz18;
{
	char sBuf[29];
	char sYear[10];
	char sXh[10];
	char sJym[20];
	char sTemp[29];
	int  iYear;
	int  iCur;
	char sDate[25];
	int iRet;
	strncpy(sBuf,sSfz15,6);
	sBuf[6]='\0';
	strncpy(sXh,sSfz15+8,7);
	strncpy(sYear,sSfz15+6,2);
	sYear[2]='\0';
	
	GetTime(sDate,NULL,NULL);
	sDate[4]='\0';
	iCur=atoi(sDate);
	iYear=atoi(sYear);
	if(iYear+2000>=iCur)
		iYear=iYear+1900;
	else
		iYear=iYear+2000;
	sprintf(sTemp,"%s%04d%s",sBuf,iYear,sXh);
	iRet=gh_scjym_sfz18(sTemp,sJym);
	sTemp[17]=sJym[0];
	sTemp[18]='\0';
	strcpy(sSfz18,sTemp);
	return(iRet);
}

/*******************************************************
模块名称:生成18位身份证的校验位
输入参数:  
           类型         变量名          作用
		  char *		sZjhm
输出参数:  
           类型         变量名          作用
		  char *		sJym;
全局变量: 
           类型			名称            作用
数据库表:
模块简述: 
		  
编写人  :熊晟华 
编写单位:厦门建行信息技术部
日  期  :2002/08/31 
修改人  :
修改单位:
日  期  :
*********************************************************/
int gh_scjym_sfz18(sZjhm,sJym)
char * sZjhm;
char * sJym;
{
	int iWi[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
	int cDz[]={'1','0','X','9','8','7','6','5','4','3','2'};
	int iSum;
	int iMod;
	int iJym;
	int iNum;
	int i;
	iSum=0;
	for(i=0;i<17;i++)
	{
		if(sZjhm[i]>='0'&&sZjhm[i]<='9')
		{
			iSum+=(sZjhm[i]-'0')*iWi[i];
		}
		else
		{
			/*ERROR1("无效的证件号码[%s]",sZjhm);*/
			return(10017);
		}
	}
	iMod=iSum%11;
	sprintf(sJym,"%c",cDz[iMod]);
	return(0);	
}

⌨️ 快捷键说明

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