一个简单的凯撒密码加密解密代码演示—古典密码
一、引言
密码学的发展历史和重要性
密码学是一门研究密码系统或隐藏通信的科学技术,它在人类历史长河中有着深远的发展。在古代,密码学主要用于军事和政治目的,如凯撒密码和纳粹的恩尼格玛密码等。随着计算机和网络技术的普及,密码学逐渐发展成为保障信息安全的重要手段。
二、凯撒密码原理
其实关于凯撒密码的原理,说白了就两字:替换!!!
例如:
我们的字母表: 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
如果,位移量是3的话,那就是将字母A换作字母D,将字母B换作字母E…
三、凯撒密码加密解密代码演示
1、使用Python编写代码实现凯撒密码的加密和解密功能
- 加密代码
def caesar_jiami(message, key):
# 在这里将密钥限制在 0-25 的范围内
key = int(key)
key = key % 26
# 初始化加密后的密文
cipher = ""
# 遍历明文中的每个字符
for char in message:
# 如果是大写字母
if char.isupper():
# 对字符进行加密,并将加密后的字符加入密文中
cipher += chr((ord(char) + key - 65) % 26 + 65)
# 如果是小写字母
elif char.islower():
# 对字符进行加密,并将加密后的字符加入密文中
cipher += chr((ord(char) + key - 97) % 26 + 97)
# 如果是其他字符,直接将字符加入密文中
else:
cipher += char
return cipher
- 解密代码
def caesar_jiemi(jiami, key):
# 这里将密钥限制在 0-25 的范围内
key = int(key)
key = key % 26
# 初始化解密后的明文
message = ""
# 遍历密文中的每个字符
for char in jiami:
# 如果是大写字母
if char.isupper():
# 对字符进行解密,并将解密后的字符加入明文中
message += chr((ord(char) - key - 65) % 26 + 65)
# 如果是小写字母
elif char.islower():
# 对字符进行解密,并将解密后的字符加入明文中
message += chr((ord(char) - key - 97) % 26 + 97)
# 如果是其他字符,直接将字符加入明文中
else:
message += char
return message
2、运行过程和结果
- 加密与解密输出
1、首先输入密钥(偏移量)的大小:9
2、输入需要加密的明文:hello world
*完整代码
def caesar_jiami(message, key):
# 将密钥限制在 0-25 的范围内
key = int(key)
key = key % 26
# 初始化加密后的密文
cipher = ""
# 遍历明文中的每个字符
for char in message:
# 如果是大写字母
if char.isupper():
# 对字符进行加密,并将加密后的字符加入密文中
cipher += chr((ord(char) + key - 65) % 26 + 65)
# 如果是小写字母
elif char.islower():
# 对字符进行加密,并将加密后的字符加入密文中
cipher += chr((ord(char) + key - 97) % 26 + 97)
# 如果是其他字符,直接将字符加入密文中
else:
cipher += char
return cipher
def caesar_jiemi(jiami, key):
# 将密钥限制在 0-25 的范围内
key = int(key)
key = key % 26
# 初始化解密后的明文
message = ""
# 遍历密文中的每个字符
for char in jiami:
# 如果是大写字母
if char.isupper():
# 对字符进行解密,并将解密后的字符加入明文中
message += chr((ord(char) - key - 65) % 26 + 65)
# 如果是小写字母
elif char.islower():
# 对字符进行解密,并将解密后的字符加入明文中
message += chr((ord(char) - key - 97) % 26 + 97)
# 如果是其他字符,直接将字符加入明文中
else:
message += char
return message
def main():
# 请输入需要加密的明文和key
key = input("请输入key(偏移量长度):")
message = input("请输入需要加密的明文:")
jiami = caesar_jiami(message, key)
print("加密的密文:", jiami)
jiemi_message = caesar_jiemi(jiami, key)
print("解密的密文:", jiemi_message)
if __name__ == "__main__":
main()