SPY基础教学系列-第一章密码篇-第一节凯撒密码

在密码学中,凯撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。
作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。
例如,有这样一个拉丁文例子

OmniaGalliaest

divisainPartestres

(高卢全境分为三部分)

用凯撒密表加密后,就成为密文

RPQLDJDOOLDHVW

GLYLVDLQSDUWHVWUHV

那么接下来就给大家留几个作业吧(鉴于作业难度过高,18岁以下人士可以不做=w=)

第一题(50分):jvvru://eqtcn.5rqk.eqo/rquv/ctejkxgu/00/38/5fap1.bkr?x=rn74o(偏移位数为2)

第二题(50分):kwwsv://frudo.5srl.frp/srvw/dufklyhv/00/38/omz6u.cls?y=yptn5(偏移位数为3)

加分题(20分):nzzvy://iuxgr.5vuo.ius/vuyz/gxinobky/00/37/gqvhx.fov?b=bspts(偏移位数未知)

------------------未完待续---------------------

这个。。。是什么?

function trans(str, offset) {
  const chars = str.split('');
  return chars.map(s => {
    var letters = /^[A-Za-z]$/;
    if (!s.match(letters)) return s;
    const code = s.charCodeAt();
    let ACode = 'A'.charCodeAt();
    let ZCode = 'Z'.charCodeAt();
    if (s.toUpperCase() !== s) {
      ACode = 'a'.charCodeAt();
      ZCode = 'z'.charCodeAt();
    }
    let realCode = s.charCodeAt() + offset;
    if (realCode < ACode) realCode = ZCode + (realCode - ACode) + 1;
    if (realCode > ZCode) realCode = ACode + (realCode - ZCode) - 1;
    return String.fromCharCode(realCode);
  }).join('');
}

trans(‘jvvru://eqtcn.5rqk.eqo/rquv/ctejkxgu/00/38/5fap1.bkr?x=rn74o’, -2)
trans(‘kwwsv://frudo.5srl.frp/srvw/dufklyhv/00/38/omz6u.cls?y=yptn5’, -3)
trans(‘nzzvy://iuxgr.5vuo.ius/vuyz/gxinobky/00/37/gqvhx.fov?b=bspts’, -6)

不過我只能載第一個…

学到了,这就去aom卧底

毕竟游戏里的内容可以在游戏外交流,否则就真的需要研究密码学了。
下一步是不是要讲对称和非对称加密了2333

该主题在最后一个回复创建后90天后自动关闭。不再允许新的回复。