恺撒密码是移位密码的一个典型应用。恺撒密码据传是古罗马恺撒大帝用来保护重要军情的加密系统通过将字母按顺序推后3位起到加密作用。改进版的恺撒密码可以将一个字母利用字母表中该字母后面的第k个字母替代,k有 25 种可能的密钥。
案例:如果对明文“bob.ilove you.Alice”,利用k=3恺撒密码加密,得到的密文是什么?
对于 k=3 的恺撒密码,其字母替换关系是:明文的“abcdef...xyz”,替换为“defghi..abc”。于是,明文“bob.ilove you.Alice”加密后得到的密文是“ere,Ioryh brx.Dolhh”
恺撒密码是单字母密码,仅仅采用了简单的替代技术,优点是算法简单,便于记忆;缺点是结构过于简单,密码分析者只要通过很少的信息就可以破译密文。
换位密码,又称置换密码,是根据一定的规则重新排列明文,以便打破明文的结构特性。置换密码的特点是保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序。也就是说,改变了明文的结构,不改变明文的内容。
换位密码可分为列置换密码和周期置换密码,,下面主要介绍列置换密码。
案例:假设采用密钥向 k=nice 的列置换密码,对明文“bob i love you”进行加密,加密得到的密文是什么?
【解】密钥 k=nice,则密钥长度 n=4,密钥的字母顺序为(4,3,1,2),因此将明文排列成 M;矩阵,每行分别为 bobi、love、youx,其中最后的“x”为填充字母。依据密钥规定的列输出顺序输出各列,便得到密文为:bvu iex ooo bly。
综合案例:设 Bob 给 Alice 发送了 frgh 和 cuerippnori$ottknlmrwpce 两段密文。 其中第一段密文为密钥 k=3(字符集为 26 个小写英文字母) 的恺撒密码, 第二段密文是采用了第一段密文的明文作为加密密钥的列置换密码(填充字符为$ )。
试求:(1) 第一段密文的明文;
试求:(2) 第二段密文的明文(写出解密过程)
请注意审题,均是密文转明文。
(1)frgh是以k=3位密钥加密后得到的密文,因此各字母需要往前推3位,即得到正确答案:code
(2)(2)求解第二段明文:密钥 code 的长度 n=4,密钥字母顺序:{1,4,2, 3}列输出顺序:第1列->第 4列->第2列->第3列密文 cuerippnori$ottknlmrwpce 对应的明文矩阵为:computrnetworkprinciples去掉填充字符所求明文为:computrnetworkprinciple。
图解如下:一共24个字符,一行4个,即6行,依次往下排。
上述操作解析OK