900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python凯撒加密代码_解密题(凯撒密码)

python凯撒加密代码_解密题(凯撒密码)

时间:2023-10-01 03:28:58

相关推荐

python凯撒加密代码_解密题(凯撒密码)

在密码学中,恺撒密码(英语:Caesar

cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

下面有道题目:

Descript a string,The encryption rules are:

-Only letters and numbers can be encrypted

-The encryption rules of letters is :a->c,b->d....y->a,z->b

-The encryption rules of number is :1->8,2->7...9->0

Simple Input:

cv 79 agctu qh cigg,vig yknn tgkipu;cv 69,vjg ykv;cpf cv 59,vjg lwfiogpv.

Simple output:

at 20 years of age,the will reigns; at 30,the wit;and at 40,the judgment.

在这道题上,数据方面的解密我们很容易就可以看出数字方面的规律,映射的双方加起来是等于9,所以我们只需要求9-n就可以了.我们主要要说的是英文方面的解密,英文方面的解密是一个凯撒密码,这个题因为密文有限,所以有多个方法可以解决.

比较暴力的方法是通过建立映射表来求解,通过encrypt_map[n]来得到映射值.

下面我们来说一下另一种,通过ASCII码和通式来求解

先贴一下代码

shift = 2

i = ord(i)

i = ((i + shift) - 97) % 26 + 97

i = chr(i)

这个题,我们可以看出密文是在原文的基础上往左边偏移了2个位置

所以在解题的时候,我们往右偏移2个位置

但是在y还有z的地方,又变成了a,b,就是说这个字符是个环,z的后边继续从a开始延续,是有周期的

那么我们就可以知道26就是个周期(26个字母)

所以我们通过求模,除以26取余,就可以得到在一个周期内的偏移量是多少

最后在a的ASCII码的基础上加上偏移量,就能得到我们要的字符了

python有个python之禅,我们在python交互界面上输入import this就可以看到

我们去看源码的时候,可以看到,这段the zen of python原本就是一个用了凯撒加密的密文,通过上面提到的方式生成一个映射表解密出来的,算是个彩蛋吧

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。