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

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

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

FrontendX发布于 2025/2/7更新于 2026/10/24102 浏览
使用 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':,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :, :,
                    :, :}


 ():
    cipher = 
     letter  message:
         letter != :
            
            
            cipher += MORSE_CODE_DICT[letter] + 
        :
            
            
            cipher += 

     cipher


 ():

    
    message += 

    decipher = 
    citext = 
     letter  message:

        
         (letter != ):

            
            i = 

            
            citext += letter

        
        :
            
            i += 

            
             i ==  :

                 
                decipher += 
            :

                
                decipher += (MORSE_CODE_DICT.keys())[(MORSE_CODE_DICT
                .values()).index(citext)]
                citext = 

     decipher


 ():
    message = 
    result = encrypt(message.upper())
    (result)

    message = 
    result = decrypt(message)
    (result)

    message = 
    result = encrypt(message.upper())
    (result)

    message = 
    result = decrypt(message)
    (result)


 __name__ == :
    main()
'-.-'
'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
''
for
in
if
' '
# 查字典并添加对应的摩斯密码
# 用空格分隔不同字符的摩斯密码
' '
else
# 1 个空格表示不同的字符
# 2 表示不同的词
' '
return
# 将字符串从摩斯解密为英文的函数
def
decrypt
message
# 在末尾添加额外空间以访问最后一个摩斯密码
' '
''
''
for
in
# 检查空间
if
' '
# 计数器来跟踪空间
0
# 在空格的情况下
# 在空间的情况下
else
# 如果 i = 1 表示一个新字符
1
# 如果 i = 2 表示一个新词
if
2
# 添加空格来分隔单词
' '
else
# 使用它们的值访问密钥(加密的反向)
list
list
''
return
# 硬编码驱动函数来运行程序
def
main
"JUEJIN-HAIYONG"
print
".--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --."
print
"I LOVE YOU"
print
".. .-.. --- ...- . -.-- --- ..-"
print
# 执行主函数
if
'__main__'

输出:

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

目录

  1. 前言
  2. 算法
  3. 加密
  4. 解密
  5. 执行
  6. 摩斯密码对照表
  7. 实现摩斯密码翻译器的 Python 程序
  8. 表示摩斯密码图的字典
  9. 根据摩斯密码图对字符串进行加密的函数
  10. 将字符串从摩斯解密为英文的函数
  11. 硬编码驱动函数来运行程序
  12. 执行主函数

更多推荐文章

查看全部
  • Ubuntu 下编译自定义 ImmortalWrt 固件与软件包
  • Nvidia 与 GitHub 免费大模型 API Key 获取指南
  • AI 辅助开发 SpringBoot 在线图书借阅平台实战流程解析
  • JSBSim 1.0.0 无人机飞行仿真与控制系统实战
  • 大模型 Agent 核心技术与面试要点解析
  • 前端跨子域通讯核心方案与避坑实践
  • 国内环境下零成本部署 n8n 与私有 AI 模型实战指南
  • 本地代码推送至 GitHub 完整流程指南
  • 7 款主流 AI 编程工具评测与对比
  • 数据结构:八大常见排序算法详解
  • 基于 ROS 与 Ego-Planner 的无人机动态避障仿真实现
  • 自行车在线租赁系统设计与实现(SSM 框架)
  • Tomcat 安装、环境配置及 IDEA/Eclipse 集成指南
  • 大模型技术详解:架构、训练与微调
  • SkyWalking Java Agent 配置实战:IDEA 与 Tomcat 多场景详解
  • C++ 简单 HTTP 服务器实现详解
  • Python Tkinter 集成 DocsGPT 开发 AI 代码助手
  • Blender 集成 AI 绘画插件实战:AI-Render 使用指南
  • AI 大模型源码解析:打造 GitHub 智能答疑助手
  • PCL 点云处理算法与基础函数汇总(C++)

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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