- 论坛徽章:
- 0
|
源代码如下。需要实现的功能就是一个接口文件某个字段要加密
比如原始接口文件1.avl
1111&33333&44444&
2222&44444&55555&
通过加密后encrypt_interface 1.avl f.avl 1
输出的接口文件始终从第二行开始要多一个“&”出来。不晓得究竟是怎么回事。希望大家帮忙看看
f.avl
|d|d|d|d&33333&44444&
&|e|e|e|e&44444&55555&
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 512
#define MAXFLD 100
#define MAX_NAMELEN 128
#define RECORD_LENGTH 1024
#define TIME_LENGTH 32
#define MAX_THREAD 1024
Encrypt(char* cSrc,char* cDest)
{
char c;
int i,h,l,j=0;
for (i=0;i<(int)strlen(cSrc);i++)
{
c=cSrc[i];
h=(c>>4)&0xf;
l=c&0xf;
cDest[j]=h+'y';
cDest[j+1]=l+'c';
j+=2;
}
cDest[j]='\0';
return 0;
}
int main(int argc, char *argv[])
{
char input[100];
char output[100];
char domain[10];
FILE *fp,*ofp; //定义文件指针
//判断输入参数是否为三个
if (argc == 4) {
strcpy (input, argv[1]);
strcpy (output, argv[2]);
strcpy (domain, argv[3]);
//输出提示处理参数
printf("原始接口为:%s\n",input);
printf("输出接口为:%s\n",output);
printf("加密字段为:%s\n",domain);
if((fp=fopen64(input,"r"))==NULL)//判断是否成功打开源文件,执行读取操作
{
printf("%s 文件打开错误\n",input);
exit(0);
}
char lineBuff[4000];
int i=0;
while(fgets(lineBuff, 4000,fp) != NULL)
{
i++;
//用strtok()函数提取分隔符隔开的每个字符串并用加密函数处理
//定义ii初始化用来接受有多少个&分割域
int ii=0;
int num = atoi(domain);
char* token = strtok( lineBuff, ",-&");
while( token != NULL )
{
/* 处理当前取到的域*/
ii++;
if ( ii == num ) {
printf( "第%d加密域为:%s \n",ii,token );
char dest1[128]="\0";
Encrypt(token,dest1);
printf("第%d分割域加密后的字符串为:%s\n",ii,dest1);
if((ofp=fopen64(output,"at+"))==NULL)//判断是否成功打开源文件,执行读取操作
{
printf("%s 文件打开错误\n",output);
exit(0);
}
fprintf(ofp,"%s&",dest1);
fflush(ofp);
fclose(ofp);//关闭文件
}
else {
printf( "第%d分割域为:%s \n",ii,token );
if((ofp=fopen64(output,"at+"))==NULL)//判断是否成功打开源文件,执行读取操作
{
printf("%s 文件打开错误\n",output);
exit(0);
}
fprintf(ofp,"%s&",token);
fflush(ofp);
fclose(ofp);//关闭文件
}
/* 处理下一个 */
token = strtok( NULL, ",-&");
}
//printf("第%d行内容为:%s\n",i,lineBuff);
}
fclose(fp);//关闭文件
} else {
printf ("使用方法: %s 原始接口 加密输出接口 加密字段\n",argv[0]);
} // end if
return 0;
}
|
|