示例#1
0
/********************************************************************
*
* 描述:				对密钥进行处理,并构造矩阵
*
* 参数:
*	key1			密钥1
*	key2			密钥2
*
* 返回值:
*
********************************************************************/
void setKeys(const char* key1, const char* key2)
{
	char* tmpkey1 = delete_repeate(key1);
	char* tmpkey2 = delete_repeate(key2);
	char* key1_uppercase = strChange(tmpkey1, 0);
	char* key2_uppercase = strChange(tmpkey2, 0);
	free(tmpkey1);
	free(tmpkey2);
	tmpkey1 = NULL;
	tmpkey2 = NULL;
	char* key1_uppercase_source = setSource(uppercase_source, key1_uppercase);
	char* key2_uppercase_source = setSource(uppercase_source, key2_uppercase);
	free(key1_uppercase);
	free(key2_uppercase);
	key1_uppercase = NULL;
	key2_uppercase = NULL;
	setMatrix(lowercase_source, matrix);
	setMatrix(key1_uppercase_source, matrix_right_up);
	setMatrix(key2_uppercase_source, matrix_left_down);
	key1_uppercase_source = NULL;
	key2_uppercase_source = NULL;
}
示例#2
0
//根据的绝路路径计算文件的md5如:D:\Downloads\d3.ppt
CString ValueMD5(CString file)
{
	MD5VAL val;
	CString result;
	TCHAR chtmp[1024];
	file = strChange(file);
	FILE *fp = _wfopen(file, L"rb");
	if(fp)
	{
		val = md5File(fp);	
		swprintf(chtmp,1024, 
			L"%08x%08x%08x%08x", conv(val.a), conv(val.b), conv(val.c), conv(val.d));
		fclose(fp);
	}
	result.Format(L"%s", chtmp);
	return result;
	
}
示例#3
0
/********************************************************************
*
* 描述:					对给定的文件进行处理(只留下字符,全部改为小写字符),并在中间插入消息
*
* 参数:
*	sourcename			要处理的文件的文件名
*	destname			处理后的文件的文件名
*	msg					要插入文件中的信息
*
* 返回值:
*
********************************************************************/
void handleText(const char* sourcename, const char* destname, const char* msg)
{
	FILE* sourcefp;
	FILE* tmpfp;
	FILE* destfp;
	const char* tmp = "tmp";//中间文件的文件名
	fopen_s(&sourcefp, sourcename, "r");
	fopen_s(&tmpfp, tmp, "w+");
	fopen_s(&destfp, destname, "w");
	char ch = NULL;
	while ((ch = fgetc(sourcefp)) != EOF)
	{
		if (ch >= 'a'&&ch<'z' || ch>'A'&&ch < 'Z')
		{
			ch = tolower(ch);
			fputc(ch, tmpfp);
		}
	}
	int textsize = ftell(tmpfp);
	fseek(tmpfp, 0, SEEK_SET);
	srand(0);
	int offset = rand() % textsize;//插入信息的位置
	int charsize = sizeof(char);
	int buffercount = 1024;//buffer可以存放1024个char
	int buffersize = buffercount*charsize;
	int offsetsize = charsize*offset;
	int n1 = offsetsize / buffersize;//要读n次
	int offsetdelt = offsetsize % buffersize;//读到offset处的最后一次要读的数据的大小
	char* buffer = (char*)malloc(buffersize);
	for (int i = 0; i < n1; i++)
	{
		fread_s(buffer, buffersize, charsize, buffercount, tmpfp);
		fwrite(buffer, charsize, buffercount, destfp);
	}
	fread_s(buffer, buffersize, charsize, offsetdelt, tmpfp);
	fwrite(buffer, charsize, offsetdelt, destfp);
	char* lowermsg = strChange(msg, 1);
	fwrite(lowermsg, charsize, strlen(lowermsg), destfp);
	free(lowermsg);
	lowermsg = NULL;
	int left = textsize - offset;
	int leftsize = left*charsize;
	int n2 = leftsize / buffersize;
	int leftdelt = leftsize % buffersize;
	for (int i = 0; i < n2; i++)
	{
		fread_s(buffer, buffersize, charsize, buffercount, tmpfp);
		fwrite(buffer, charsize, buffercount, destfp);
	}
	fread_s(buffer, buffersize, charsize, leftdelt, tmpfp);
	fwrite(buffer, charsize, leftdelt, destfp);
	free(buffer);
	fclose(sourcefp);
	fclose(tmpfp);
	fclose(destfp);
	remove(tmp);
	buffer = NULL;
	sourcefp = NULL;
	tmpfp = NULL;
	destfp = NULL;
}