加密

pal3000 2004-03-16 04:15:54
命令行指定两个文件,从第一个文件按行读入字符串(明文),并且把编码后的字符序列(密文)写到第二个文件(用十六进制文本的形式)。你可以使用如下加密模式:明文字符c的加密形式是c^key[i],其中key是先前从cin读入的一个字符串(密钥)。这个程序以循环的方式使用key中的字符,直到读完全部输入的明文。用同一个密钥对密文重新加密后就能得到原来的明文,如果没有输入密钥(输入了空字符串),则不做加密。
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
made_in_ 2004-03-16
  • 打赏
  • 举报
回复
这只是一个很简单的加密而已啊,要求的也很详细了,还有什么困难吗?
柯本 2004-03-16
  • 打赏
  • 举报
回复
以前我做的一个,与你的要求几乎一致:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXKEY 80
int main(int ac,char *av[])
{
FILE *fin,*fout;
int c;
char key[MAXKEY];
int i,ct;

if (ac!=3)
{
fprintf(stderr,"usage <filein> <fileout>\n");
exit(-1);
}

printf("Please Input a Key:");
gets(key);
ct=strlen(key);

if (ct==0)
exit(0);

if((fin=fopen(av[1],"rb")) ==NULL)
{
fprintf(stderr,"%s can't open\n",av[1]);
exit(-1);
}
if((fout=fopen(av[2],"wb")) ==NULL)
{
fprintf(stderr,"%s can't create!\n",av[2]);
exit(-1);
}
i=0;
while((c=fgetc(fin))!=EOF)
{
c ^=key[i++];
fputc(c,fout);
// 如果要16进制文输出改为:
// fprintf(fout,"%02x",c);
if (i=ct)
i=0;
}
fclose(fin);
fclose(fout);
}
liotion 2004-03-16
  • 打赏
  • 举报
回复
沒看明白,
對字符串加密可以循環的給每個字符加上一個數組的字符,很難破解的。

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧