这应该是个加密算法的题吧??
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位数。