明码加密实现

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何实现一种名为「明码加密」的简单加密和解密算法。这种加密方法曾在晚清时期中国早期的电报通信系统中使用。

👀 预览

## 示例1
numb = 1530; encryption_text = "0383"
## 示例2
numb = 0; encryption_text = "9853"
## 示例3
numb = 12345; encryption_text = None

🎯 任务

在这个项目中,你将学习:

  • 如何理解加密方法及其基本原理
  • 如何实现 plain_code_encryption(numb) 函数来执行加密
  • 如何使用各种输入测试加密函数
  • 如何处理用户输入并调用加密函数

🏆 成果

完成这个项目后,你将能够:

  • 解释「明码加密」方法及其历史背景
  • 使用 Python 实现基本的加密和解密算法
  • 使用不同的输入场景测试和验证加密函数
  • 将用户输入和输出集成到加密脚本中

了解加密方法

在这一步中,你将了解「明码加密」项目中使用的加密方法。

加密方法如下:

  1. 明码的四位数字分别与加密密钥的四位数字相加。
  2. 对于每一位数字相加,如果和大于或等于 10,则舍去 10,只保留个位数字。
  3. 解密时,用密码减去解密密钥的四位数字得到明码并找到对应的文本。

例如,假设明码是 1530,加密密钥是 9853。

  1. 加第一位数字:1 + 9 = 10,将 10 视为 0。
  2. 加第二位数字:5 + 8 = 13,舍去 10 并保留 3。
  3. 加第三位数字:3 + 5 = 8。
  4. 加第四位数字(10 + 3 = 13,舍去 10 并保留 3)。

最终加密后的文本是「0383」。

✨ 查看解决方案并练习

实现 plain_code_encryption(numb) 函数

在这一步中,你将在 plain_code.py 文件中实现 plain_code_encryption(numb) 函数。

  1. 在代码编辑器中打开 plain_code.py 文件。
  2. 找到 plain_code_encryption(numb) 函数。
  3. 实现该函数以执行以下任务:
    • 输入一个介于 0 到 9999 之间(包括 0 和 9999)的任意数字,将其与 9853 相加,并在相加后得到一个 4 位数字(格式为 str),然后返回该数字。
    • 如果输入数字不足 4 位,则用 0 填充缺失的位置。例如,如果输入数字是 32,则需要将其视为 0032。
    • 将相同位置的数字相加。如果和大于或等于 10,则舍去 10,只保留个位数字。
    • 如果输入数字不在 0 到 9999 之间,则返回 None

以下是 plain_code_encryption(numb) 函数的完整代码:

def plain_code_encryption(numb: int) -> str:
    if numb < 0 or numb > 9999:
        return None

    numb_str = str(numb).zfill(4)
    key_str = "9853"
    encryption_text = "".join(
        str((int(n) + int(k)) % 10) for n, k in zip(numb_str, key_str)
    )

    return encryption_text
✨ 查看解决方案并练习

测试 plain_code_encryption(numb) 函数

在这一步中,你将使用提供的示例测试 plain_code_encryption(numb) 函数。

  1. 在代码编辑器中打开 plain_code.py 文件。
  2. 在文件末尾添加以下代码:
if __name__ == "__main__":
    print(plain_code_encryption(1530))  ## 输出:"0383"
    print(plain_code_encryption(0))     ## 输出:"9853"
    print(plain_code_encryption(12345)) ## 输出:None
  1. 保存文件并使用命令 python3 plain_code.py 运行脚本。
  2. 验证输出是否与预期结果匹配。
✨ 查看解决方案并练习

处理用户输入

在这一步中,你将修改脚本以接受用户输入,并使用用户提供的数字调用 plain_code_encryption(numb) 函数。

  1. 在代码编辑器中打开 plain_code.py 文件。
  2. 找到你在上一步中添加的代码,并用以下代码替换它:
if __name__ == "__main__":
    txt = int(input())
    print(plain_code_encryption(txt))
  1. 保存文件并使用命令 python3 plain_code.py 运行脚本。
  2. 出现提示时,输入一个介于 0 到 9999 之间的数字,脚本将打印出加密后的文本。

恭喜你!你已经完成了「明码加密」项目。你已经学会了如何实现加密方法并使用各种输入对其进行测试。

✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。