我觉得创建26个文件实在太冗杂了。其实一个就够了,因为随着你的选择的改变(比如以9为加密条件,所有字母循环后移9位),目标文件里面的内容就自动更新了。
当然你也可以使用函数 int create(char *filename , int mode) 在执行框里手动输入像 e:\\original.txt 这样的地址字符,但你想象一下,这是不是很麻烦?
在实际加密中,可使用随机函数 rand()产生循环后移位数,而且完全可以不限制在26位,扩展ASCII码可以产生成千上万的字符,将文件加密到那些几乎无规律,难以识别的字符上,安全性就提高了许多。当然还有什么多轮加密之类的。可以自己慢慢摸索,挺有趣的。祝你好运!
修改如下(已成功执行):
#includestdio.h
#includestdlib.h
char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/
{
while(ch='A'ch='Z')
{
return ('A'+(ch-'A'+n)%26);
}
while(ch='a'ch='z')
{
return ('a'+(ch-'a'+n)%26);
}
return ch;
}
void main()
{
FILE *in,*out;
char ch1,ch2;
int i;
printf("Please input the number(1~26) you want to use for encrypt:");
scanf("%d",i);
if((in=fopen("e:\\original.txt","r"))==NULL) /*文件名根据自己建立的位置修改,
我建在e盘的根目录下
{
printf("Can not open this file!\n");
exit(0);
}
if((out=fopen("e:\\encrypt.txt","w"))==NULL) //同上
{
printf("Can not open this file!\n");
exit(0);
}
while(!feof(in)){
if((ch1=fgetc(in))!=EOF)
ch2=encrypt(ch1,i);
fputc(ch2,out);
}
printf("Encrypt is over!\n");
fclose(in);
fclose(out);
}
它是一种代换密码。据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为凯撒密码。
耶稣诞生前100年中的那个古罗马时代,“信息”一词恐怕还没有诞生,但这并不影响一个伟大人物对它进行的开拓性运用。“凯撒密码”——这个在谍报领域耳熟能详的词条,就是这个伟大人物的先知性发明,当然他也是最早的实践者。
和他发明的密码情报一样扑朔迷离的情节,还有盖乌斯?尤利乌斯?凯撒(公元前100年(一说为:公元前102年)—公元前44年)的死亡之谜——尽管史料中说他是遇刺身亡,但另一种观点认为,凯撒拥有当时最为强大的密集情报网络,不会对政敌的行刺预谋一无所知,他的死另有蹊跷之处。而事实证明,对于这些谜团的求证或许不仅仅是想渲染凯撒之死的神秘色彩。
凯撒的《高卢战记》于公元前52-前51年间的冬天写成。凯撒写书的目的有两个:一则为自己辩护,再者是为自己在罗马的派系提供宣传提纲。
书中记述了凯撒作战的许多经典战例,特别是运用谍报人员和信息传递上,凯撒更有自己独特之处。他组建了最高效的私人间谍网。除依靠审讯战俘和当地人来获取情报外,凯撒还广泛雇佣和使用了数量巨大的谍报人员。
凯撒不但有自己强大的情报队伍,包括密探和侦察部队等,还善于利用当地人为自己刺探有价值的情报。他通过好言安慰等方式赢得了雷米人的信任,雷米人答应帮自己搞情报。在雷米人的一个市镇被比尔及人攻打时,雷米人便派使者向凯撒禀报,称比尔及军队正在挖掘城墙,希望凯撒军队前去救援。凯撒随即让雷米人带路,和雷米人派出的弩比底亚和克里特的弓弩手,以及巴利阿里的射石手去援助,一起把围城的敌人暂时赶跑。接下来,由于敌人众多,在不了解情况下,凯撒没有贸然出击,屡次试探后,终于摸清了敌人的兵力及勇悍程度,觉得自己的部队与之相比毫不逊色,才决定进击。经过一场激烈的战斗,敌军损失过半。
经过交战,敌方的同盟军见取胜无望,且粮食不足,便萌生退意,约定谁先受到凯撒攻击,要相互救援,之后就急忙在半夜的时候各自回家。这些消息都被凯撒的探马获悉,凯撒在天亮时派出部队追击,敌军四散奔逃,凯撒军一顿砍杀,敌人死伤无数,凯撒军队直追击到天近黄昏的时候才收兵回营。
本文经指文烽火工作室授权发布,文章作者原廓。任何媒体或者公众号未经书面授权不得转载。
恺撒密码是一种代换密码。据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。
恺撒密码据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。很显然可以把字母表前移或者后错1~25位!如YFS VNFS XMN 密匙向后移动5位 解密得TAN QIAN SHI.进制转换密码:就是将一些按一种进制排列在一起的数据转换成十进制,然后对照字母表找出来!第一步观察数据特点确定进制。第二步转换成十进制并找对应字母。如 24 1 16 17 27观察易得是八进制 转换成十进制位20 1 14 15 23 在字母表上找得 TANOW