密码学(⼀)之恺撒密码(移位密码)
decoder前⾔
密码学的基本⽬的是使得两个在不安全的信道上进⾏安全的通信,在计算机⽹络中,现假设有两个⼈Alice和Bob,Alice想发送消息给Bob,告诉他明天凌晨2点毒贩将在4号码头进⾏交易,请Bob配合缉毒。这⾥Alice有⼀个⿇烦就是他怕在信息传输中可能会被敌⼈Oscar监听,甚⾄篡改消息内容,导致整个计划失败,Bob也对Alice发过来的消息有疑虑,不知道消息是否为Alice本⼈所发,消息内容是否真实等等。
这⾥密码学的重要性就体现出来了,假设Alice事先和Bob商量好⼀个密钥(key),Alice通过密钥将明⽂(plaintext)加密成密⽂,在⽹络中传输,Bob收到Alice传过来的密⽂(ciphertext),⽤事先商量好的密钥进⾏解密,得到明⽂,⽽敌⼈即使监听到Alice发送的消息,也是加密过的密⽂,由于不知道密钥,所以⽆法知道真实的明⽂,整个过程如下。
image.png
移位密码(Shift Cipher)、恺撒密码(Ca esa r Cipher)
移位密码是古典密码学中最早,最简单的⼀种加、解密码⽅法,最早可追溯⾄古罗马时代,尤利乌斯:恺撒曾经使⽤过此密码。
移位密码是通过将明⽂中所使⽤的字母按照⼀定的字数进⾏“平移”来加密,为了简化内容,在这⾥我们只使⽤英⽂字母作为⽰例,我们⽤⼩写字母(a,b,c,d…)来表⽰明⽂,⽤⼤写字母(A,B,C,D…)来表⽰密⽂。
最早期时,⼀般将字母平移3位,也就是a->D,b->E,c->F,
这种最早时平移3位是叫恺撒密码(Caesar Cipher),后来经过推⼴,平移位数也不⼀定是3位,可以是其它任何整数位,这种⼜叫移位密码(Shift Cipher),可以知道,恺撒密码是移位密码的⼀个特例(key=3时),下⾯是恺撒密码平移的⼯作⽅式
image.png
移位密码的加密
使⽤移位密码可以⽤来加密普通的英⽂句⼦,但是我们要建⽴英⽂字母和模26剩余之间⼀⼀对应关系,如A->0,B->1,…Z->25。其列表如下: