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

📄 datatrans.cpp

📁 一个基于3des加密、解密程序
💻 CPP
字号:
#include "stdafx.h"
#include "UserHead.h"
#include "DataTrans.h"

DataTrans::DataTrans()
{}

DataTrans::~DataTrans()
{}


int DataTrans::AsciiToBCD(uchar* in,uchar* out)
{
	int RtCode=0;
	int SourceLen=0;
	uchar  t1,t2;

	SourceLen=strlen((char*)in)%2;
	if(SourceLen)
	{
		*in=toupper(*in);
		if((*in)>'9')
			*out=(*in)-'A'+10;
		else *out=(*in)&0x0F;

		in++;
		out++;
		RtCode++;
	}
	while(*in)
	{
		t1=toupper(*in);
		t2=toupper(*(in+1));

		if(t1>'9')t1=t1-'A'+10;
		else      t1=t1&0x0F;

		if(t2>'9')t2=t2-'A'+10;
		else      t2=t2&0x0F;

		*out=(t1<<4)+t2;
		out++;
		in+=2;
		RtCode++;
	}
	return(RtCode);
}

int DataTrans::BCDToAscii(uchar* in, uchar* out, int num)
{
	int Counter=0;
	uchar t1,t2=0;

	for(Counter=0;Counter<num;Counter++)
	{
		t1=(*(in+Counter))>>4;
		t2=(*(in+Counter))&0x0F;
		if(t1>9)
			*(out+2*Counter)= t1-10+'A';
		else  *(out+2*Counter)= t1+'0';

		if(t2>9)
			*(out+2*Counter+1)= t2-10+'A';
		else  *(out+2*Counter+1)= t2+'0';

	}
	return(0);
}

int DataTrans::FormatMoney(char* strIn, char* strOut, int outlen)
{
	char tmpstr[50];
	long money;
	money = (long)(atof(strIn)*100);
	memset(strOut,0x30,outlen);
	ltoa(money,tmpstr,10);
	if(money>0)
	{
		memcpy(&strOut[(outlen-strlen(tmpstr))],tmpstr,strlen(tmpstr));
		strOut[(outlen-strlen(tmpstr))+strlen(tmpstr)]='\0';
	}
	else
	{
		strOut[0]='-';
		memcpy(&strOut[outlen-strlen(tmpstr)+1],tmpstr+1,strlen(tmpstr)-1);
		strOut[outlen-strlen(tmpstr)+1+strlen(tmpstr)-1]='\0';
	}
	return 0;
}

void DataTrans::FormatString(char* source, int srclen, char* result)
{
	/*
	char buffer[100];

	memcpy(buffer,source,srclen);
	buffer[srclen]='\0';
	CString strtemp;
	strtemp.Format("%s",buffer);
	strtemp.TrimLeft(" ");
	strtemp.TrimRight(" ");
	memset(result,32,srclen);
	memcpy((result+(srclen-strtemp.GetLength())),\
			strtemp.GetBuffer(strtemp.GetLength()),strtemp.GetLength());
	result[srclen]='\0';
	*/
	return;
}

void DataTrans::HexToAsc(unsigned char *Sour,unsigned char *Dest,int Len)
{
	int i;
	unsigned char temp;

	for (i=0 ;i<2*Len;)
	{
		temp = *(Sour+i/2) >>4;
		if(temp > 0x09)
			*(Dest + i++) = temp +0x37;
		else 
			*(Dest + i++) = temp +0x30;
		temp = *(Sour+i/2) &0x0f;
		if(temp > 0x09)
			*(Dest + i++) = temp +0x37;
		else 
			*(Dest + i++) = temp +0x30;
	}
	Dest[i]='\0';
}

void DataTrans::AscToHex(unsigned char *Sour,unsigned char *Dest,int Len)
{
	int i;
	unsigned char high,low;

	for(i=0;i<Len;)
	{
		high = *(Sour+i);
		high = toupper(high);
		low  = *(Sour+i+1);
		low = toupper(low);
		if((high >='A') && (high <= 'F'))
			high = high -'7';
		else 
			high = high -'0';
		if((low >='A') && (low <= 'F'))
			low = low -'7';
		else 
			low = low -'0';
		*(Dest+i/2) = (high<<4)	+ low;
		i += 2;
	}
}

void DataTrans::GetAge(char * source, char * result)
{
	/*
	CTime tmptime=NULL, inputtime = NULL;
	int age;
	char year[4], month[2], day[2];
	memcpy(year, source, 4);
	memcpy(month, source+5, 2);
	memcpy(day, source+8, 2);
	tmptime = CTime::GetCurrentTime();
	age = tmptime.GetYear()- atol(year);
	if(tmptime.GetMonth()-atol(month)<1)
		age--;
	else if((tmptime.GetMonth()-atol(month))==0 || (tmptime.GetDay()-atol(day))<1)
		age--;
	sprintf(result, "%3d", age);
	result[3]='\0';
	*/
}

int DataTrans::GenerateSum(unsigned char * Sour)
{
	int nType, i , nSum, nSubType;
	int Len, nRideValue;
	char tmpstr[256];
	Len = strlen((char*)Sour);
	nType = Len%2;
	nSum = 0;
	for(i = 0; i< Len; i++)
	{
		memcpy(tmpstr, &Sour[i], 1);
		tmpstr[1]='\0';
		switch(nType)
		{
		case 0:
			nSubType = i % 2;
			if(!nSubType)
				nRideValue = atoi(tmpstr) * 1;
			else
				nRideValue = atoi(tmpstr) * 2; 
			break;
		case 1:
			nSubType = i % 2;
			if(!nSubType)
				nRideValue = atoi(tmpstr) * 2;
			else
				nRideValue = atoi(tmpstr) * 1;
			break;
		}
		if (nRideValue > 10)
			nRideValue = 1 + (nRideValue -10);
		nSum += nRideValue;
	}
	if(nSum!=0)
	{
		nSum = 10 - (nSum %10);
	}
	return nSum;
}

⌨️ 快捷键说明

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