给我凯撒密码的方法(凯撒密码是什么方法)

2023-03-17 16:43:03 密语知识 思思

恩~ 你都给了明文和密钥…不知道你还要什么方法啊?

如果你不知道凯撒,可以去百度一下,我给你简单说一下吧~

英文26个字母(不分大小写)可以由数字01~26来代替(有人也用00~25来代替,不过不常见~)

凯撒全称叫凯撒位移加密法,顾名思义啊~

比如A是01,你用n=4加密之后就是01+4=05,05在字母表里是E,所以A加密之后就是E~

CHINA用n=4加密之后就是GLMRI~ 明白没?

对了,需要说明一下,上面举的例子是字母表向右移动4位,n=4也可以理解为向左移动4位,那么CHINA加密之后就变成YDEJW~ 不过不用担心,一般情况下都是向右移的,当然也不排除某些变态向左移(强烈鄙视这种人!!!)…

恩~ 废话说了好多,给你密文吧~说明一下,我是用01~26和右移的方法加密的~

Glmri Girwvep Vehms erh XZ Yrmzivwmxc~ 完毕~(我加的有点快,不保证全对,你自己检查一下哈~)

再补一句,字母表可以循环用的,比如Z用完了就回到ABC…,这时候A就相当于27~ 明白否?

嘿嘿… 我腹黑一下下~ 如果你想用密码去虐一个人的脑细胞的话,推荐你用00~25和左移的方法,保证他能死至少一半的脑细胞~

嘿嘿嘿嘿……

请高手解释一下,什么叫凯撒密码,还有什么叫进制转换密码

恺撒密码据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起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

什么是凯撒加密法?

简单的说,就是位移加密。

比如你的密码是ABCDE

然后设置凯撒密码的偏移量为3的话

那加密之后的密码就是DEFGH

凯撒密码

我觉得创建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);

}

请高手解释一下,什么叫凯撒密码,还有什么叫进制转换密码?

它是一种代换密码。据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为凯撒密码。

凯撒加密算法(最简单的对称加密)

凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母 A 将变为 C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。

因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文: “Jgnnq” 。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位 变为“Hello” 。这里,移动的位数“2”是加密和解密所用的密钥。

该程序既可用于加密又可用于解密。只要传入明文和偏移量即可加密,解密需要传入密文和负的偏移量就可以解密。

输出的结果:

凯撒密码由于加解密比较简单,密钥总共只有 26 个,攻击者得到密文后即使不知道密钥,也可一个一个地试过去,最多试 26 次就可以得到明文。

这里不光根据 offset 偏移进行加密,还加上了字符所在的下标进行混合加密。

输出的结果: