C语言求救!编写一文件加密程序!
发布网友
发布时间:2022-05-01 22:22
我来回答
共4个回答
热心网友
时间:2022-06-24 07:30
////这个是我前些日子无聊至急写的超简单超烂 异或加
////密程序 你改改看! 或许可以满足你的要求!
/// 我的51空间里:http://luobinme.51.com 有更详细
// 的代码!
#include "stdio.h"
main(int argc,char *argv[])
{
FILE *fn,*fp;
char pas[64]; //保存的密码 密码可以使用64个字符
char pad; //输入的密码
int pa; //计算中用到的指向当前密码位
char chrnx; //密码第一个字符与最后一个字符之和
char chrxn; //密码第一个字符和第二个字符之加
char chrxx; //倒数第二个密码字符与第二个密码字符做异或运算的值
char ch; //读取的明文数据
char wch; //经过计算后的密文
if(argc<3){printf("命令参数错误! 请正确确填写参数!\nUsger: [输入文件] [输出文件] \n 例如: HFWPWD pas.txt pas.hfw \n\nH*F*W 2008年6月11日 广州番禺 (今天休息)\n");return 0;}
pa=0;
printf("请输入密码:");
memset(pas,0,65);
while(1)
{
pad=getch();
if(pad==13)break;
if(pad!=8)
{
pas[pa]=pad;
printf("*");
pa++;
if(pa>=64){printf("\n老大!密码超过64位了! 重来吧!\n");return 0;}
}
else{printf("\n\n撤消重来:");pa=0;memset(pas,0,65);}
}
if(strlen(pas)<6){printf("\n密码小与6为!~重来!");return 0;}
printf("\n密码长度:%d\n",strlen(pas));
printf("输入文件:%s\n",argv[1]);
printf("输出文件:%s\n\n",argv[2]);
fn=fopen(argv[1],"rb"); //输入明文或密文
if(fn!=NULL)
{
fp=fopen(argv[2],"wb+"); //输出密文或明文
if(fp!=NULL)
{
printf("#############>>> H*F*W 2008 <<<#############\n\n 文件处理中.....\n\n###########################################\n");
chrnx=pas[0]+pas[strlen(pas)-1]; //密码第一和最后一个字符相加
chrxn=pas[0]+pas[1]; //密码第一个字符和第二个字符之和
chrxx=pas[1]^pas[strlen(pas)-2]; //倒数第二个密码字符与第二个密码字符做异或运算
pa=0;
while(!feof(fn))
{
ch=fgetc(fn);
wch=(((ch^pas[pa])^chrxn)^chrnx)^chrxx; //加密 密文先与密码中的一个字符做异或运算再与第一个密码字符与第二个密码字符之和做异或运算最后再与第一个密码字符与最后一个密码字符之和做异或运算 最最后再与chrxx变量做异或运算
if(feof(fn)==0)fputc(wch,fp);
pa++;
if(pa>=strlen(pas))pa=0;
}
fclose(fn);
fclose(fp);
printf("文件处理完毕!\n");
}
else printf("无法打开或建立输出文件文件: %s\n",argv[2]);
}
else printf("无法打开输入文件: %s\n",argv[1]);
return 0;
}
热心网友
时间:2022-06-24 07:30
过两天我告诉你答案
热心网友
时间:2022-06-24 07:31
加密?
热心网友
时间:2022-06-24 07:31
好的 首先
然后
我不会了