自己是真的菜。
网上的解题代码很多了,这里就不说了,主要是解析一下。
PS:trivial在数学里是一眼就可以看出来的意思,也就“显然” orz
先是认真的分析了一下,但觉得好复杂哦md,看了答案一回味,这原来是凯撒密码。
enc_char = ord('a') + (ord(plaintext[i])-ord('a')+rotate_amount)%26
就是凯撒移位密码,rotate就是移动的位数。
所以这个加密是,给定key和plaintext后,根据key和plaintext生成一个移动的位数rotate
rotate的值和plaintext有关,也就是plaintext中的每一位都要进行移位,而每一位需要移位的数rotate都是不一样的
所以解密就是把密文减去rotate就行了,而移位数rotate和 key的值,plaintext的index有关,因为移位加密并不改变数据长度,所以cipher的index和plaint的index是相等的,也就是密文直接移位减去rotate就是明文了
网友评论