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

📄 pwdcheck.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************* **   源码文件名称 : pwdcheck.SQC **   所属子系统   : 卡管理 **   功能描述     : 对卡密码处理和检查 **   当前文件版本 : 4.0.0.0 **   作        者 : UCCB   ALex  **   版本创建日期 : 2004/09/17 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/#include "sysdefine.h"#include "code.h"#include "attrdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmscardkind.h"#include "cmstbsreginf.h"EXEC SQL INCLUDE sqlca;/******************************************************* **	  函数名称:cmsApiChkCardPwd  **   功能描述:检查卡密码 **   输入参数: **   			pstCardInfo		 ---	卡片信息表 **   			pcCardPwd   	 ---	卡密码     **   			pcHappenPlace	 ---	业务发生地    **   输出参数: **    **   涉及库表:  **				cmscardinfo		---		卡片信息表	 **   返回结果:int  0 成功  -1 失败 密码不正确 **   作        者 : UCCB   ALex  **   版本创建日期 : 2004/09/17 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiChkCardPwd( pstCardInfo, pcCardPwd, pcHappenPlace )struct	cmscardinfo		*		pstCardInfo; 	/*卡片信息表*/char  					*		pcCardPwd; 	 	/*卡密码    	*/char  					*		pcHappenPlace;	/*业务发生地	*/{	struct	cmscardkind		stCardKind;	int						iRtn;	sprintf( g_acTrcMsg, "cmsApiChkCardPwd begin " );	TRCLOG2	memset( &stCardKind, 0x00, sizeof( struct  cmscardkind ) );	/* 从卡片信息表获取纪录并锁住纪录 */	pubStoVCmscardinfo( pstCardInfo );	EXEC SQL	DECLARE Info_l_cur CURSOR FOR 				SELECT * FROM CMSCARDINFO				WHERE cardno = :cmscardinfo_cardno				FOR UPDATE;	/* 定义游标出错    if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	*/	SQLOPENCUR(Info_l_cur,"Info_l_cur")	/* 打开游表出错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	EXEC SQL	FETCH Info_l_cur INTO R_CMSCARDINFO ;	/* 取游表出错 */	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/* 记录不存在 */	else if ( SQLCODE == SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS113" );		sprintf( g_acRspMsg, "卡号[%s]不存在", pstCardInfo->cardno );		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	pubVtoSCmscardinfo( pstCardInfo );	/* 获取卡片种类表 */	iRtn = cmsApiGetCmsCardKind( pstCardInfo->cardkind, &stCardKind );	if ( iRtn )	{		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/*判断是否需要密码检查*/	if( stCardKind.pswdmark[BIT1_LEN]==UNCHKPASSWD )	{		sprintf(g_acRspMsg,"无需检查密码");		ERRLOG		goto EXIT;	}	/* 检查密码错误次数 */	if ( ( ( (pstCardInfo->errnumtot >= stCardKind.totalerrnum )			&& ( stCardKind.totalerrnum != PWDERRNOTLIMIT ) )		|| ( ( pstCardInfo->errnum >= stCardKind.atmerrnum )			&& ( stCardKind.atmerrnum != PWDERRNOTLIMIT )			&& (   !strcmp( pcHappenPlace, CHANNALID_UNIONATM )				|| !strcmp( pcHappenPlace, CHANNALID_ATM )				|| !strcmp( pcHappenPlace, CHANNALID_CBATM )				|| !strcmp( pcHappenPlace, CHANNALID_HXATM )				|| !strcmp( pcHappenPlace, CHANNALID_HKATM ) ) ) )		&& ( pstCardInfo->cardstat[ BIT9_LEN ] == BIT9_CARDLOCK ) )	{		strcpy( g_acRspCode, "CMS173" );		pubCrtRspInfo( pstCardInfo->cardno );		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/* 按业务发生地调用加密机函数处理上送密码 */	/* 调用加密机函数处理需要直接加密密码  */	/*判断密码是否正确*/	sprintf( g_acTrcMsg, "1[%s]2[%s]", pcCardPwd, pstCardInfo->passwd );	TRCLOG2	iRtn = ChkPINBLOCK( pcCardPwd, pstCardInfo->cardno, pstCardInfo->passwd );	if ( iRtn )	{		if ( !strcmp( g_acRspCode, "HSM200" ) 			|| !strcmp( g_acRspCode, "DPS909" ) )		{			strcpy(g_acRspCode,"CMS201");			sprintf(g_acRspMsg,"卡密码不正确");		}		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/*	if( strcmp( pcCardPwd, pstCardInfo->passwd ) != 0 )	{		sprintf(g_acRspCode,"CMS201");		sprintf(g_acRspMsg,"卡密码不正确");		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	*/		/*判断密码错误次数*/	if( pstCardInfo->errnum==0 && pstCardInfo->errnumtot==0 )	{		goto EXIT;	}	else	{/*初始化密码错误次数*/			/*给结构宿组赋值*/		pstCardInfo->errnum = ZEROS;		pstCardInfo->errnumtot = ZEROS;		pubStoVCmscardinfo( pstCardInfo );		/* 修改卡片信息表记录 */		EXEC SQL	UPDATE CMSCARDINFO					SET errnum = :cmscardinfo_errnum,						errnumtot = :cmscardinfo_errnumtot					WHERE CURRENT OF Info_l_cur;		/* 修改出错 */		if ( SQLCODE )		{			strcpy( g_acRspCode, "CMS114" );			pubCrtRspInfo( "cmscardinfo", SQLCODE );			ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")			return FAILED;		}	}EXIT:	sprintf( g_acTrcMsg, "cmsApiChkCardPwd end " );	TRCLOG2	SQLCLOSECUR(Info_l_cur,"Info_l_cur")	return SUCCESS;}/******************************************************* **	  函数名称:cmsApiChkTbsPwd  **   功能描述:检查用户密码(查询密码) **   输入参数: **   			pstCmsTbsRegInf	----	用户密码登记表 **   			pcCardPwd   	----	用户密码     **   			pcHappenPlace  	----	业务发生地 **   输出参数: **    **   涉及库表:  **				cmstbsreginf	----	用户密码登记表	 **   返回结果:int **   			0				----	成功 **   			-1				----	失败 **   作        者 : Feng **   版本创建日期 : 2004/09/17 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiChkTbsPwd( pstCmsTbsRegInf, pcCardPwd, pcHappenPlace )struct	cmstbsreginf	*	pstCmsTbsRegInf;	/* 用户密码登记表	*/char  					*	pcCardPwd;			/* 用户密码			*/char  					*	pcHappenPlace;		/* 业务发生地		*/{	/*定义	局部变量*/	int			iRtn;							/* 函数返回值		*/		char		caPasswd[ PASSWD_LEN + 1 ];		/* 加密后的密码		*/	sprintf( g_acTrcMsg, "cmsApiChkTbsPwd begin " );	TRCLOG2	/*初始化结构*/	memset( caPasswd, 0x00, sizeof( caPasswd ) );	/* 按业务发生地调用加密机函数处理上送密码 */	/* 调用加密机函数处理需要直接加密密码 caPasswd */	strcpy( caPasswd, pcCardPwd );			/*判断密码是否正确*/	/* 电话银行密码错 */	if( strcmp( caPasswd, pstCmsTbsRegInf->inqpasswd ) != 0 )	{		sprintf(g_acRspCode,"CMS212");		sprintf(g_acRspMsg,"查询密码不正确");		ERRLOG;		return FAILED;	}		sprintf( g_acTrcMsg, "cmsApiChkTbsPwd begin " );	TRCLOG2	return SUCCESS;}/******************************************************* **	  函数名称:cmsApiChkCardPwd2 **   功能描述:检查卡密码 **   输入参数: **   			pcCardNo		 ---	卡号 **   			pcCardPwd   	 ---	卡密码     **   			pcHappenPlace	 ---	业务发生地    **   输出参数: **    **   涉及库表:  **				cmscardinfo		---		卡片信息表	 **   返回结果:int  0 成功  -1 失败 密码不正确 **   作        者 : UCCB   ALex  **   版本创建日期 : 2004/09/17 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiChkCardPwd2( pcCardNo, pcCardPwd, pcHappenPlace )char					*		pcCardNo; 	/*卡号*/char  					*		pcCardPwd; 	 	/*卡密码    	*/char  					*		pcHappenPlace;	/*业务发生地	*/{	struct	cmscardinfo		stCardInfo;	int						iRtn;	sprintf( g_acTrcMsg, "cmsApiChkCardPwd2 begin " );	TRCLOG2	memset( &stCardInfo, 0x00, sizeof( struct  cmscardinfo ) );	strcpy( stCardInfo.cardno, pcCardNo );	iRtn = cmsApiChkCardPwd( &stCardInfo, pcCardPwd, pcHappenPlace );	if ( iRtn )	{		ERRLOG		return FAILED;	}	return SUCCESS;}

⌨️ 快捷键说明

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