数学学霸来 应该是数学问题 ,求解这是啥玩意。(凯撒密码怎么求位移数)

2023-03-04 22:29:45 听风 思思

这应该是个加密算法的题吧??

y=x+k(MOD 26)这个叫做恺撒密码。

凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。

凯撒密码(移位密码):公式Y=(X+k)(mod 26):X是原码字母在字母表中的位置,Y是码文在字母表中的位置,k是位移量,也就是密钥。

所以,你只要给我k,我就能给你将这段字母解密了。

我宣布,已经破解了这段密码。答案就是 irememberyourloveliness

i remember your loveliness 我记得你的可爱。

上面公式中的k应该是k=7,解密的时候,再拿对应字母减去7.

比如P,P往前7个字母是i, 如果不够减,就加26再减。

凯撒密码

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

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

英文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和左移的方法,保证他能死至少一半的脑细胞~

嘿嘿嘿嘿……

凯撒公式什么意思?有知道是怎么算的么?

凯撒公式也称凯撒移位,是最简单的加密方法之一,相传是古罗马恺撒大帝用来保护重要军情的加密系统,它是一种替代密码。

加密公式

密文 = (明文 + 位移数) Mod 26

解密公式

明文 = (密文 - 位移数) Mod 26

凯撒密码位移规律表怎么用

凯撒移位密码。

也就是一种最简单的错位法,将字母表前移或者后错几位

,例如:

明码表:ABCDEFGHIJKLMNOPQRSTUVWXYZ。

密码表:DEFGHIJKLMNOPQRSTUVWXYZABC。

这就形成了一个简单的密码表,如果我想写frzy(即明文),那么对照上面密码表编成密码也就是iucb(即密文)了。密码表可以自己选择移几位,移动的位数也就是密钥。

进制转换密码。比如给你一堆数字,乍一看头晕晕的,你可以观察数字的规律,将其转换为10进制数字,然后按照每个数字在字母表中的排列顺序,拼出正确字母。

这里有段代码关于凯撒密码,如何加入位移量?

就以加密为例子

if(*(s+i)='a'+n*(s+i)='z')

*(s+i)-=n;

else if (*(s+i)='A'*(s+i)='A'+n)

*(s+i)=*(s+i)+'Z'-'A'-(n-1);

}

改成

if (*s = 'a'  *s = 'z')    //如果这个字符是小写

{

    int as=*s-'a';            //算出改字符的ascii码

    as+=n;                    //偏移

    if ((char)as  'z')       //如果偏移后超过了z就要修正

        as=(char)(as-1)-'z'+'a';

    *s=(char)as;

}

else (if (*s = 'A'  *s = 'Z'))

{

    int as=*s-'A';

    as+=n;                    

    if ((char)as  'Z')       

        as=(char)(as-1)-'Z'+'A';

    *s=(char)as;

}

这样改看看行不行

凯撒密码中字母的位移可以随便定吗?

(1)将字母A转换为ASCII (65,),字母D(68,),后移N位,加N(比如加3,),+=,

(2)对于重复码,可按特定字符(ASCII特定,比如)处理,表示同前一个字符。第二个重复字母,则用标示,依此类推。当然这个重复数是有限的,为了扩展编码,可采用4位数。