恺撒密码据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起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
凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母 A 将变为 C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。
因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文: “Jgnnq” 。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位 变为“Hello” 。这里,移动的位数“2”是加密和解密所用的密钥。
该程序既可用于加密又可用于解密。只要传入明文和偏移量即可加密,解密需要传入密文和负的偏移量就可以解密。
输出的结果:
凯撒密码由于加解密比较简单,密钥总共只有 26 个,攻击者得到密文后即使不知道密钥,也可一个一个地试过去,最多试 26 次就可以得到明文。
这里不光根据 offset 偏移进行加密,还加上了字符所在的下标进行混合加密。
输出的结果:
如果推进数字是3的话,这个凯撒密码就可以是L ORYH BRX。
凯撒密码是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
扩展资料
各国我爱你:
1、英 语:I love you
2、法 语:Je t’aime,Je t’adore
3、德 语:Ich liebe dich
4、希 腊语:∑'αγαπώ(S’agapo)
5、犹 太语:אני אוהב אותך
6、匈 牙 利:Én is szeretlek
7、爱 尔 兰:taim i’ngra leat
8、爱 沙 尼 亚:Mina armastan sind
9、芬 兰:Min rakastan sinua
10、比 利 时佛兰芒语:IK zie u graag
11、意 大 利语:ti amo,ti vogliobene
12、拉 丁语:Te amo,Vos amo
我觉得创建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);
}
“恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。
假如有这样一条指令:
RETURN TO ROME
用恺撒密码加密后就成为:
UHWXUA WR URPH
如果这份指令被敌方截获,也将不会泄密,因为字面上看不出任何意义。
这种加密方法还可以依据移位的不同产生新的变化,如将每个字母左19位,就产生这样一个明密对照表:
明:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密:T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
在这个加密表下,明文与密文的对照关系就变成:
明文:THE FAULT, DEAR BRUTUS, LIES NOT IN OUR STARS BUT IN OURSELVES.
密文:MAX YTNEM, WXTK UKNMNL, EBXL GHM BG HNK LMTKL UNM BG HNKLXEOXL.
很明显,这种密码的密度是很低的,只需简单地统计字频就可以破译。于是人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。它是由16世纪法国亨利三世王朝的布莱瑟·维吉尼亚发明的,其特点是将26个恺撒密表合成一个,见下表:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A CC D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。
它是一种代换密码。据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为凯撒密码。