python凯撒密码加密函数_利用python实现凯撒密码加解密功能

凯撒密码介绍

凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。他的原理很简单,说到底就是字母于字母之间的替换。

实验目的

应用Python程序设计语言的相关知识,理解并实现凯撒密码加解密过程。

实验内容

任务1:运行import this, 观察代码运行结果;查看this.py源文件(可以在Python安装目录下的Lib文件夹下找到),分析它的原理。

任务2:实现凯撒密码加解密过程。

实验环境

Python 3.8

实验步骤

在实验的第一部分,观察import this的运行结果,分析原理;

在实验的第二部分,实现凯撒加解密过程。

实验代码及运行结果

1.import this

运行结果

原理分析

观察this.py文件:

可见,该段代码其实就是一个凯撒解密过程。c取元组中的两个值65和97,分别对应ASCII码中的'A'和'a'。以从65开始的循环为例,i从0到25, 每一次循环,d[chr(i+c)] = chr((i+13) % 26 + c)这句代码都在更新d列表中的键值对。从0开始到12,定义了从'A':'N'、'B':'

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Python实现密码加密解密的代码: ```python def encrypt_caesar(plaintext, shift): """ 密码加密函数 :param plaintext: 明文字符串 :param shift: 偏移量,即密钥 :return: 密文字符串 """ ciphertext = '' for char in plaintext: if char.isalpha(): # 将字母转换为 ASCII 码值 char_code = ord(char) # 判断字母是大写还是小写 if char.isupper(): # 对大写字母进行加密 char_code = (char_code - 65 + shift) % 26 + 65 else: # 对小写字母进行加密 char_code = (char_code - 97 + shift) % 26 + 97 # 将加密后的 ASCII 码值转换回字母 char = chr(char_code) # 将加密后的字符添到密文字符串中 ciphertext += char return ciphertext def decrypt_caesar(ciphertext, shift): """ 密码解密函数 :param ciphertext: 密文字符串 :param shift: 偏移量,即密钥 :return: 明文字符串 """ plaintext = '' for char in ciphertext: if char.isalpha(): # 将字母转换为 ASCII 码值 char_code = ord(char) # 判断字母是大写还是小写 if char.isupper(): # 对大写字母进行解密 char_code = (char_code - 65 - shift) % 26 + 65 else: # 对小写字母进行解密 char_code = (char_code - 97 - shift) % 26 + 97 # 将解密后的 ASCII 码值转换回字母 char = chr(char_code) # 将解密后的字符添到明文字符串中 plaintext += char return plaintext ``` 其中,`encrypt_caesar`函数用于加密明文字符串,`decrypt_caesar`函数用于解密密文字符串。两个函数的参数相同,分别为明文或密文字符串和偏移量(即密钥)。函数实现过程是: 1. 遍历明文或密文字符串中的每个字符。 2. 如果字符是字母,则将其转换为 ASCII 码值。 3. 判断字母是大写字母还是小写字母,对其进行加密解密。 4. 将加密解密后的 ASCII 码值转换回字母,并将其添到密文或明文字符串中。 5. 返回加密解密后的密文或明文字符串。 示例: ```python plaintext = 'hello world' shift = 3 ciphertext = encrypt_caesar(plaintext, shift) print(ciphertext) # khoor zruog decrypted_plaintext = decrypt_caesar(ciphertext, shift) print(decrypted_plaintext) # hello world ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值