凯撒密码是一种简单的替换式密码,其中明文中的每个字母都按照其在字母表中的顺序向后(或向前)移动固定数目作为密文。这种加密技术以罗马共和时期恺撒的名字命名,当年恺撒曾用此方法与其将军们进行联系。凯撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是3时,明文字母表"ABCDEFGHIJKLMNOPQRSTUVWXYZ"将变为"DEFGHIJKLMNOPQRSTUVWXYZABC"。解密时,根据事先已知的密钥反过来操作,得到原来的明文。
ROT13(回转13位)是凯撒密码的一种变体,其中A替换为N、B替换为O,依此类推到M替换为Z,然后序列反转:N替换为A、O替换为B,最后Z替换为M。ROT13函数是它自己的逆反,对任何字符x(ROT13(x))=ROT26(x)=x,意味着两个连续的ROT13应用函数会回复原始文字。
凯撒密码的偏移量可以是正数也可以是负数,根据偏移量的不同,还存在若干特定的凯撒密码名称。例如,偏移量为10时称为Avocat(A→K),偏移量为13时称为ROT13,偏移量为-5时称为Cassis (K 6),偏移量为-6时称为Cassette (K 7)。
凯撒密码的加密原理简单,因此在现代并不被认为是安全的加密方式。其破解方法包括频率分析和样式单词分析等。
加密术最早应用于古代战争,当时是靠士兵随身携带的信件来传递情报,但总是免不了被敌方俘虏,从而使情报落入敌手,这对作战部队而言可是生死悠关的大事。
传说当时的凯撒大帝有一个能加密的办法,就在写命令前做一个对应表,明码:A B C D E F...W X Y Z,密码:D E F G H I...Z A B C,如果他想写BABY,就用EDEB来表示。当大将收到了EDEB这个密码后,向前推3个字母,就得到了明文。
这个对应表的移位数是3,当然别的数也可以,作战前由凯撒定好移位数后通知大将们,战时就可以进行保密通信了。这种加密方式其实就是把坐标系横移了3格。
但是,这种简单的加密方法也很容易被敌方猜到,敌人从1到25推25次,得到25组新编码,必有一种编码是真实的情报内容,把这组编码区别出来非常容易,因为其它24组都是毫无意义的字母组合,只有这一组是有意义的句子,找个识字的人就可以看得出来。