一个简单的凯撒密码加密解密代码演示—古典密码

一个简单的凯撒密码加密解密代码演示—古典密码

一、引言

密码学的发展历史和重要性

密码学是一门研究密码系统或隐藏通信的科学技术,它在人类历史长河中有着深远的发展。在古代,密码学主要用于军事和政治目的,如凯撒密码和纳粹的恩尼格玛密码等。随着计算机和网络技术的普及,密码学逐渐发展成为保障信息安全的重要手段。

二、凯撒密码原理

其实关于凯撒密码的原理,说白了就两字:替换!!!

例如:
我们的字母表: 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()

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值