Python-摩斯密码加密解密
Posted 小狐狸FM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-摩斯密码加密解密相关的知识,希望对你有一定的参考价值。
前言
- 密码表只写了
英文字母
和数字
,在百度的时候发现不同地方写的符号转换方式不大一样。
你也可以在encode.txt
或decode.txt
中添加新的内容,- 如果没联网的话倒是可以用脚本跑,有联网的话还是用在线的吧
一、摩斯密码表
[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
以上是关于Python-摩斯密码加密解密的主要内容,如果未能解决你的问题,请参考以下文章