字符处理问题,请大佬解惑

[复制链接]
查看11 | 回复2 | 2021-1-27 05:21:02 | 显示全部楼层 |阅读模式
externchar*file_encrypt(char*file_text,unsignedlongintlength,unsignedintpassword)
{
intnum=0;
char*file_mov;
file_mov=file_text;
printf("%s\n",file_text);
while(1)
{
*(file_mov+num)=*(file_mov+num)+password;
num++;
if(num==length)
{
break;
}
}
printf("%d\n",num);
returnfile_mov;
}
写了1个加密解密程序,以上是加密模块,解密模块只将+password改为-password
加密的文本初始化为:123456789\0abcdefgh
当输入的password为1234时,解密的结果为:12345678.\0abcdefgh
还测试了password为:1,99,11111等情况,均无此问题,请大神解惑
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:21:02 | 显示全部楼层
加密解密还有调用的代码都贴出来
问题可能在其他地方
回复

使用道具 举报

千问 | 2021-1-27 05:21:02 | 显示全部楼层
解密模块:
#include"encryption.h"
externchar*file_decrypt(char*file_text,unsignedlongintlength,unsignedintpassword)
{
intnum=0;
char*file_mov;
file_mov=file_text;
while(1)
{
*(file_mov+num)=*(file_mov+num)-password;
num++;
if(num==length)
{
break;
}
}
printf("%d\n",num);
returnfile_mov;
}
保存模块:
#include"encryption.h"
externvoidfile_save(char*text,unsignedlongintlength,char*file)
{
FILE*fp=NULL;
intcount=0;
fp=fopen(file,"w");
if(fp==NULL)
{
printf("创建保存文件失败\n");
}
else
{
count=fwrite(text,sizeof(char),length,fp);
if(count==0)
{
printf("信息存储失败\n");
}
}
fflush(fp);
fclose(fp);
free(text);
}
信息读取模块:
#include"encryption.h"
externchar*read_src_file(unsignedlongint*file_length,char*src_file)
{
FILE*fp=NULL,*fp1=NULL;
char*file_text=NULL;
fp=fopen(src_file,"r");
if(fp==NULL)
{
printf("文件打开失败\n");
returnNULL;
}
fseek(fp,0,SEEK_END);
*file_length=ftell(fp);
rewind(fp);
file_text=(char*)malloc(sizeof(char)*((*file_length)+1));
fgets(file_text,*file_length+1,fp);

fclose(fp);
returnfile_text;
}
主函数:
intmain()
{
//参数设置
unsignedlonginti=0;
unsignedlongint*file_length=&i;
unsignedintpassword=0;
intoperand=0;
char*text=NULL,*file=NULL,*file_text=NULL;
chardest_file[100],src_file[100];
charjud;
//帮助信息
while(1)
{
help_print();
printf("输入你的命令:\n");
scanf("%d",&operand);
switch(operand)
{
case1://加密信息
{
get_file(dest_file,src_file);
file_text=read_src_file(file_length,src_file);
if(file_text==NULL)
{
break;
}
printf("输入数字密码:\n");
scanf("%d",&password);
text=file_encrypt(file_text,*file_length,password);
file_save(text,*file_length,dest_file);
break;
}
case2://解密信息
{
get_file(dest_file,src_file);
file_text=read_src_file(file_length,src_file);
if(file_text==NULL)
{
break;
}
if(password==0)
{
printf("没有初始化密码,请输入数字密码:\n");
scanf("%d",&password);
}
text=file_decrypt(file_text,*file_length,password);
file_save(text,*file_length,dest_file);
break;
}
case3:
{
exit(0);
}
default:
{
printf("错误的命令\n");
operand=0;
break;
}
}
while(operand!=0)
{
printf("需要继续操作吗(y/n)");
scanf("%c",&jud);
if(jud=='n'||jud=='N')
{
exit(0);
}
elseif(jud=='y'||jud=='Y')
{
operand=0;
}
}
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行