凯撒密码的历史:

       最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。此为一种位移加密手段,只对26个(大小写)字母进行位移加密,规则相当简单,容易被破解。  

       凯撒密码属于替代加密,即用另一个字符来替换明文中的原字符,其中的对应关系只有加密者所知。而凯撒密码就是最简单的一种替代加密手段。

凯撒密码的原理:

       凯撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):

原文:abcdefg
密文:defghijk

a+3=d,b+3=e以此类推
为了保证都是字母,所以我们会对它取模mod 26
例如:(z+1)mod 26 = a
这样的意思

加解密算法如下:

加密算法如下:

Encode(x)=(x+n)mod 26

这里介绍两个函数:

chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。返回值是当前整数对应的ASCII字符。该函数的返回值为字符串形式,例如输入chr(90),输出为 ‘Z’ 。

ord()函数与chr()函数对应,输入ASCII字符表中字符的字符串形式,返回为其在字符表中的排序位次。例如输入ord(‘a’),输出为97。

yuanwen = input("请输入要加密的字符串:") #输入原文
n = int(input("请输入加密的偏移量:")) #输入偏移量

miwen = ""
for i in yuanwen: #取出每一个字符向右偏移n位
    if i >= 'a' and i <= 'z':
        miwen = miwen + chr((ord(i)-ord('a') + n) % 26+ord('a'))
    if i >='A' and i <= 'Z':
        miwen = miwen + chr((ord(i) - ord('A') + n) % 26 + ord('A'))
print(miwen)

测试结果如图:

解密算法如下:

decode(x)=(x-n) mod 26

代码如下:

miwen = input("输入需要解密的密文:")
n = int(input("输入偏移量:"))
yuanwen = ""
for i in miwen:
    if i >= 'a' and i <= 'z':
        yuanwen = yuanwen + chr((ord(i) - ord('a') - n) % 26 + ord('a'))
    if i >= 'A' and i <= 'Z':
        yuanwen = yuanwen + chr((ord(i) - ord('A') - n) % 26 + ord('A'))
print(yuanwen)

测试结果如图:

凯撒密码原理和加解密就是这么简单di!!!
tips:本人写的代码比较简单,没有考虑一些特殊情况,例如空格啊,或者遇到其他的字符,但是可以在这个代码的基础上自行修改满足所需条件。
如:空格就不偏移,那就跳过那一次循环,如果遇到别的字符看是否要转换,不转换也可以跳过等!!!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐