前言

  • 密码表只写了英文字母数字,在百度的时候发现不同地方写的符号转换方式不大一样。
    你也可以在encode.txtdecode.txt中添加新的内容,
  • 如果没联网的话倒是可以用脚本跑,有联网的话还是用在线的吧

摩尔斯电码 百度百科

Morse Code Translator加密解密

American Morse Code

MorseCode 小狐狸FM

一、摩斯密码表

[1]. encode.txt

例:a加密后的结果为.-

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 --..
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 -----

[2]. decode.txt

例:.-解密后的结果为a

.- 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
.- 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

二、代码

在这里插入图片描述

在这里插入图片描述

# coding=utf-8
# 作者:小狐狸FM
# 功能:摩斯密码加密&解密
# 介绍:
# 1. 输入时,每个密文需要以空格间隔开
# 2. 密文的字符需要变更为小数点和减号
# 3. 未在密码表的密文解密时会被替换成空格
# 4. 解密的结果进行了小写处理

encode_txt = "encode.txt" #加密表路径
decode_txt = "decode.txt" #解密表路径
def Exchange(target,char1,char2,char3):
    '''交换字符串中的两种字符char1,char2'''
    result = target.replace(char1,char3) #将char1替换成第三种字符
    result = result.replace(char2,char1)
    result = result.replace(char3, char2)
    return result
# print(Exchange("..--- ...-- ...--",".","-","*")) #将.和-进行互换,*用来临时存储

def GetFile(path):
    '''读取文件,返回字典对象'''
    dic = dict()
    txt = ""
    with open(path, "r") as fp:  # 文件读取
        txt = fp.read()
        lis_data = list(set(txt.split("\n")))  # 去重、分割
        if "" in lis_data: #去空
            lis_data.remove("")
        for datas in lis_data:
            key, data = datas.split(" ")  # 分割
            dic[key] = data
    return dic
# print(GetFile(encode_txt))
# print(GetFile(decode_txt))

def MorseDecode(target):
    '''摩斯密码解密'''
    lis_target = list(target.split(" ")) #分割
    dic = GetFile(decode_txt) #解密字典
    result = "" #解密结果
    for i in lis_target: #解密
        if i in dic.keys(): #存在该密文时
            result += dic[i]
        else:
            result += " "
    return result
# print(MorseDecode(".---- ..---"))

def MorseEncode(target):
    '''摩斯密码加密'''
    dic = GetFile(encode_txt) #加密字典
    result = "" #加密结果
    for i in target: #遍历明文
        if i in dic.keys(): #存在该明文时
            result += " " + dic[i]
        else:
            result += " "
    return result
# print(MorseEncode("233"))

if __name__ == '__main__': #主函数
    while True:
        print("==========================")
        print("        0. 退出          ")
        print("        1. 字符替换       ")
        print("        2. 摩斯加密       ")
        print("        3. 摩斯解密       ")
        print("==========================")
        flag = int(input("请选择:"))
        if flag==1: #字符替换
            target = input("字符串:")
            ch = input("需要替换的字符:")
            ch_replace = input("需要替换成什么:")
            print("替换结果:",target.replace(ch,ch_replace))
        elif flag==2: #摩斯加密
            target = input("字符串:")
            print("摩斯加密结果:",MorseEncode(target))
        elif flag==3: #摩斯解密
            target = input("字符串:")
            print("摩斯解密结果1:",MorseDecode(target).lower())
            print("摩斯解密结果2:",MorseDecode(Exchange(target,".","-","*")).lower())
        else:
            break
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐