凯撒密码:原理详解及Python实现加密
凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。这是一种位移加密方式,只对26个字母进行位移替换加密,规则简单,容易破解。若将明文字母表向后移动3位:
明文字母表
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
密文字母表
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
则A变成了D,B变成了E……,Z变成了C。
字母表最多可以移动25位。凯撒密码的明文字母表向后或向前移动都是可以的,通常表述为向后移动,如果要向前移动1位,则等同于向后移动25位,位移选择为25即可。
假设:现在我们要传递消息,明文为'leave at zero in the night',请加密成密文,用python语言实现。
明文:leave at zero in the night
将明文中的空格去掉,得到纯字母明文:leaveatzerointhenight
将字母表向后移动3位,得到密文对照表:
明文字母表 密文字母表 A D B E C F D G E H F I G J H K I L J M K N L O M P N Q O R P S Q T R U S V T W U X V Y W Z X A Y B Z C
根据密文对照表,将纯字母明文加密成密文:
纯字母明文 密文 l o e h a d v y e h a d t w z c e h r u o r i l n q t w h k e h n q i l g j h k t w
因此,密文为:ohdyhadowchulrqwhkqh。以下是用Python实现凯撒密码加密的代码:
plain_text = 'leave at zero in the night'
plain_text = plain_text.replace(' ', '') # 去掉空格
shift = 3 # 位移量为3,向后移动3位
cipher_text = ''
for letter in plain_text:
index = ord(letter) - ord('a') # 获取字母在字母表中的位置,a为0,z为25
shifted_index = (index + shift) % 26 # 计算移动后的位置
shifted_letter = chr(shifted_index + ord('a')) # 将移动后的位置转换为字母
cipher_text += shifted_letter
print(cipher_text)
原文地址: https://www.cveoy.top/t/topic/olw0 著作权归作者所有。请勿转载和采集!