千家信息网

如何利用Python破解摩斯密码

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何利用Python破解摩斯密码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。摩尔斯电码摩斯密码的定义如下:摩尔斯电码( 又译为摩斯密码
千家信息网最后更新 2026年11月03日如何利用Python破解摩斯密码

这篇文章将为大家详细讲解有关如何利用Python破解摩斯密码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

摩尔斯电码

摩斯密码的定义如下:

摩尔斯电码( 又译为摩斯密码,英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔与萨缪尔·摩尔斯在1836年发明。

摩尔斯电码是一种早期的数码化通信形式,它依靠一系列的点和划来传递编码信息,它的代码包括五种:

  • 点( · ):1 (读 "滴" dit ,时间占据1t )

  • 划(—):111 (读 "嗒" dah ,时间占据3t )

  • 字符内部的停顿(在点和划之间):0 (时间占据1t )

  • 字符间停顿:000 ( 时间占据3t )

  • 单词间的停顿:0000000 ( 时间占据7t )

点的长度(也就是上面的时间长度t)决定了发报的速度。

我们的英文字母、数字和标点符号与摩斯密码的对照图如下:

我们现在要发送 "M O R S E(空格) C O D E" (morse code)这单词,通过查表可知,它应该是这样

—— ——— ·—· ··· · / —·—· ——— —·· ·

对应的报文应该如下(滴 表示敲击,▢ 表示停顿)

滴滴滴▢滴滴滴▢▢▢滴滴滴▢滴滴滴▢滴滴滴▢▢▢滴▢滴滴滴▢滴▢▢▢滴▢滴▢滴▢▢▢滴▢▢▢▢▢▢▢滴滴滴▢滴▢滴滴滴▢滴▢▢▢滴滴滴▢滴滴滴▢滴滴滴

是不是很有意思?

Python实现

用 Python 实现摩斯密码的加解密,其实很简单,只需要把对照表放在一个字典中,加密的时候将明文拆分,然后从字典中取出对应的密码组合在一起,解密的时候就是通过密文去对照表找对应的明文,然后拼在一起就行。

摩斯密码对照表

我们把摩斯密码对照表用字典存储之后,是这样的:

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

解密

在解密的情况下,我们首先在要解码的字符串末尾添加一个空格,我们从字符串中提取字符。

一旦我们得到一个空格,我们就会在提取的字符序列(或我们的莫尔斯电码)中查找相应的英语字符,并将其添加到将存储结果的变量中。

一旦我们得到 2 个连续的空格,我们就会向包含解码字符串的变量添加另一个空格。

字符串末尾的最后一个空格将帮助我们识别莫尔斯电码字符的最后一个序列。

解密过程的代码如下:

# 将字符串从摩斯解密为英文的函数def decrypt(message):    # 在末尾添加额外空间以访问最后一个摩斯密码    message += ' '    decipher = ''    citext = ''    global i    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

测试

我们先来测试一下加密算法:

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

运行结果是:

.. .-.. --- ...- . -.-- --- ..-

大家可以自己对照着映射表来看看是否正确。

再测试一下解密算法:

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

运行结果是:

I LOVE YOU

完整代码

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@author: 闲欢"""# 表示摩斯密码图的字典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 = ''    global i    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 decipherdef main():    message = "I LOVE YOU"    result = encrypt(message.upper())    print(result)    message = "..  .-.. --- ...- .  -.-- --- ..-"    result = decrypt(message)    print(result)# 执行主函数if __name__ == '__main__':    main()

关于"如何利用Python破解摩斯密码"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

密码 摩斯 字符 空格 不同 单词 加密 字典 字符串 时间 空间 代码 对照表 情况 电码 函数 明文 末尾 过程 尔斯 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 广州紫鲸互联网科技有限公司 互联网科技卖菜 奇酷互联网科技 融贸通互联网科技 四个字互联网科技公司取名 济南和联互联网科技有限公司 须眉科技是互联网公司吗 互联网科技热点资讯 顶级互联网科技成果有哪些 语蝶互联网科技有限公司 成都互联网科技公司工作好不好 想开互联网科技公司怎么样 济南有互联网科技公司吗 广州百诚互联网科技有限公司官网 美国互联网科技公司 互联网科技接地气 保山互联网科技靠谱吗 银川新华互联网科技学校原画 美国五大互联网科技公司市值多少 互联网是不是新科技 关于新基建和互联网科技 猫创互联网科技 衡水科技产业互联网平台 互联网时代科技改变生活 苏州铭阳互联网科技有限公司 中国互联网十大科技股排名 华夏恒生互联网科技013171 抖集互联网科技技术咨询 广西科技产业互联网是什么
0