跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

使用 Python 实现摩斯密码加密与解密

综述由AI生成摩斯密码加密与解密可通过 Python 字典数据结构高效实现。程序建立英文字符与摩斯码的映射关系,利用循环遍历字符串完成编码,并通过空格逻辑还原密文。示例代码包含加密解密函数及主函数测试,展示了从明文到密文再转回明文的完整流程。

FrontendX发布于 2025/2/7更新于 2026/6/323 浏览
使用 Python 实现摩斯密码加密与解密

前言

摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者 Samuel F. B. Morse 的名字命名。

算法

算法非常简单。英语中的每个字符都被一系列'点'和'划'代替,或者有时只是单数的'点'或'划',反之亦然。

加密

  1. 在加密的情况下,我们一次一个地从单词中提取每个字符(如果不是空格),并将其与存储在我们选择的任何数据结构中的相应摩斯密码匹配(如果您使用 python 编码,字典可以变成在这种情况下非常有用)
  2. 将摩斯密码存储在一个变量中,该变量将包含我们编码的字符串,然后我们在包含结果的字符串中添加一个空格。
  3. 在用摩斯密码编码时,我们需要在每个字符之间添加 1 个空格,在每个单词之间添加 2 个连续空格。
  4. 如果字符是空格,则向包含结果的变量添加另一个空格。我们重复这个过程,直到我们遍历整个字符串

解密

  1. 在解密的情况下,我们首先在要解码的字符串末尾添加一个空格(这将在后面解释)。
  2. 现在我们继续从字符串中提取字符,直到我们没有任何空间。
  3. 一旦我们得到一个空格,我们就会在提取的字符序列(或我们的莫尔斯电码)中查找相应的英语字符,并将其添加到将存储结果的变量中。
  4. 请记住,跟踪空间是此解密过程中最重要的部分。一旦我们得到 2 个连续的空格,我们就会向包含解码字符串的变量添加另一个空格。
  5. 字符串末尾的最后一个空格将帮助我们识别莫尔斯电码字符的最后一个序列(因为空格充当提取字符并开始解码它们的检查)。

执行

Python 提供了一种称为字典的数据结构,它以键值对的形式存储信息,这对于实现诸如摩尔斯电码之类的密码非常方便。我们可以将摩斯密码表保存在字典中,其中 (键值对)=>(英文字符 - 莫尔斯电码) 。明文(英文字符)代替密钥,密文(摩斯密码)形成相应密钥的值。键的值可以从字典中访问,就像我们通过索引访问数组的值一样,反之亦然。

摩斯密码对照表

# 实现摩斯密码翻译器的 Python 程序

'''
VARIABLE KEY
'cipher' -> '存储英文字符串的摩斯翻译形式'
'decipher' -> '存储摩斯字符串的英文翻译形式'
'citext' -> '存储单个字符的摩斯密码'
'i' -> '计算摩斯字符之间的空格'
'message' -> '存储要编码或解码的字符串
'''

# 表示摩斯密码图的字典
MORSE_CODE_DICT = { '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':'--..',
                    '1':'.----', '2':'..---', '3':'...--',
                    '4':'....-', '5':'.....', '6':'-....',
                    '7':'--...', '8':'---..', '9':'----.',
                    '0':'-----', ', ':'--..--', '.':'.-.-.-',
                    '?':'..--..', '/':'-..-.', '-':'-....-',
                    '(':'-.--.', ')':'-.--.-'}

# 根据摩斯密码图对字符串进行加密的函数
def encrypt(message):
    cipher = ''
    for letter in message:
        if letter != ' ':
            # 查字典并添加对应的摩斯密码
            # 用空格分隔不同字符的摩斯密码
            cipher += MORSE_CODE_DICT[letter] + ' '
        else:
            # 1 个空格表示不同的字符
            # 2 表示不同的词
            cipher += ' '

    return cipher

# 将字符串从摩斯解密为英文的函数
def decrypt(message):

    # 在末尾添加额外空间以访问最后一个摩斯密码
    message += ' '

    decipher = ''
    citext = ''
    for letter in message:

        # 检查空间
        if (letter != ' '):

            # 计数器来跟踪空间
            i = 0

            # 在空格的情况下
            citext += letter

        # 在空间的情况下
        else:
            # 如果 i = 1 表示一个新字符
            i += 1

            # 如果 i = 2 表示一个新词
            if i == 2 :

                 # 添加空格来分隔单词
                decipher += ' '
            else:

                # 使用它们的值访问密钥(加密的反向)
                decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT
                .values()).index(citext)]
                citext = ''

    return decipher

# 硬编码驱动函数来运行程序
def main():
    message = "JUEJIN-HAIYONG"
    result = encrypt(message.upper())
    print(result)

    message = ".--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --."
    result = decrypt(message)
    print(result)

    message = "I LOVE YOU"
    result = encrypt(message.upper())
    print(result)

    message = "..  .-.. --- ...- .  -.-- --- ..-"
    result = decrypt(message)
    print(result)

# 执行主函数
if __name__ == '__main__':
    main()

输出:

.--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --.
JUEJIN-HAIYONG
..  .-.. --- ...- .  -.-- --- ..-
I LOVE YOU

目录

  1. 前言
  2. 算法
  3. 加密
  4. 解密
  5. 执行
  6. 摩斯密码对照表
  7. 实现摩斯密码翻译器的 Python 程序
  8. 表示摩斯密码图的字典
  9. 根据摩斯密码图对字符串进行加密的函数
  10. 将字符串从摩斯解密为英文的函数
  11. 硬编码驱动函数来运行程序
  12. 执行主函数
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • SpringBoot 整合轻量级安全框架 JWE 实战详解
  • CoppeliaSim 分拣机器人与寻迹小车仿真:码垛、颜色识别及随机物块处理
  • OpenTenBase 企业级分布式 HTAP 数据库部署实战
  • 10 个实用的 Python 自动化脚本
  • 数据结构:链式二叉树的递归实现与遍历分析
  • Python 爬虫进阶:使用 Scrapy 库进行数据提取和处理
  • 前端开发中 dist 目录详解:概念、配置与部署
  • Python 量化入门:AKshare 获取股票基金期货全市场金融数据
  • C++核心语法入门:从命名空间到nullptr
  • LeetCode 206:反转链表核心思路与 C++ 实现
  • HTML 基础标签与简易网页制作实战
  • CodeBuddy 新年活动:领取腾讯云服务器与 AI 算力
  • 支付模块开发概要与接口设计
  • 企业级 AI 智能客服系统的架构设计与实现
  • 相干伊辛机在医疗及医疗 AI 领域的应用前景
  • OpenClaw 本地部署与 QQ 机器人接入教程
  • C++ vector 容器使用、迭代器失效与模拟实现
  • 前端错误监控与处理实战指南
  • Leaflet 与 SpringBoot 实现地图点位点击获取当地时间
  • Java 常用消息中间件深度解析:特性、架构与适用场景

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online