11行Python代碼實現(xiàn)解密摩斯密碼
1、引言
小屌絲:魚哥,快來求助求助!
小魚:嗯? 啥事,讓你這么慌慌張張的?
小屌絲:剛剛我女神給我發(fā)古來這一段符號,我不知道啥意思,能不能幫我翻譯一下?
小魚:啥符號?
小屌絲:這個"… …-- --… —… …— … …-- —… —… -----"
小魚:這… 這不是摩斯密碼嗎,你女神啥時候這么厲害了?
小屌絲:魚哥,別管那么多了,快看看能不能翻譯出啥意思,萬一是我的女神要找我壓馬路呢?
小魚:話說,我也不是名偵探… 這,有點難為我了。
小屌絲:啥條件都行,只要你能翻譯出來。
小魚:嗯~ 那我試試。

2、代碼示例
2.1摩爾斯電碼科普
在進行密碼破解前,小魚先來科普一下摩爾斯電碼的姿勢 知識。
1、起源:
摩爾斯電碼( 又譯為摩斯密碼,英語:Morse code)是一種時通時斷的信號代碼,通過不同的排列順序來表達不同的英文字母、數(shù)字和標(biāo)點符號。是由美國人艾爾菲德·維爾與薩繆爾·摩爾斯在1836年發(fā)明。
2、組成
摩爾斯電碼是一種早期的數(shù)碼化通信形式,它依靠一系列的點和劃來傳遞編碼信息,它的代碼包括五種:
- 點( · ):1 (讀 “滴” dit ,時間占據(jù)1t )
- 劃(—):111 (讀 “嗒” dah ,時間占據(jù)3t )
- 字符內(nèi)部的停頓(在點和劃之間):0 (時間占據(jù)1t )
- 字符間停頓:000 ( 時間占據(jù)3t )
- 單詞間的停頓:0000000 ( 時間占據(jù)7t )
點的長度(也就是上面的時間長度t)決定了發(fā)報的速度。
3、對照表

接下來,我們就進入今天的最重要的環(huán)境,摩斯密碼的加密與解密。
2.2 加密
一、思路
實現(xiàn)的步驟總共分三步:
第一步:把冰箱門打開

搞錯了,重來
第一步:把對照表內(nèi)容放到字典里;
第二步:加密時將明文拆分;
第三步:從字典取出對應(yīng)的密碼組合在一起;
二、代碼示例
# -*- coding:utf-8 -*-
# @Time : 2024-04-12
# @Author : carl_DJ
#對照表內(nèi)容放入字典中
Dict_MorseCode = {
'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 code in message:
if code != ' ':
# 查字典并添加對應(yīng)的摩斯密碼
# 用空格分隔不同字符的摩斯密碼
cipher += Dict_MorseCode[code] + ' '
else:
# 1個空格表示不同的字符
# 2表示不同的詞
cipher += ' '
return cipher
message = "53782 53880"
result = encrypt(message)
print(f'加密后的摩斯密碼:{result}')
三、輸出結(jié)果:
加密后的摩斯密碼:..... ...-- --... ---.. ..--- ..... ...-- ---.. ---.. -----
2.3 解密
一、思路
思路與加密一樣的,都是分三步:
第一步:把對照表內(nèi)容放到字典里;
第二步:解密時通過密文去對照表找對應(yīng)的明文;
第三步:拼接起來;
二、代碼示例
# -*- coding:utf-8 -*-
# @Time : 2024-04-12
# @Author : carl_DJ
#對照表內(nèi)容放入字典中
Dict_MorseCode = {
'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': '-----',
', ': '--..--', '.': '.-.-.-', '?': '..--..', '/': '-..-.', '-': '-....-',
'(': '-.--.', ')': '-.--.-'
}
#解密,就是將字符串從摩斯解密為英文的函數(shù)
def decrypt(message):
# 在末尾添加額外空間以訪問最后一個摩斯密碼
message += ' '
decipher = ''
citext = ''
global i
for code in message:
# 檢查空間
if code != ' ':
i = 0
# 在空格的情況下
citext += code
# 在空間的情況下
else:
# 如果 i = 1 表示一個新字符
i += 1
# 如果 i = 2 表示一個新單詞
if i == 2:
# 添加空格來分隔單詞
decipher += ' '
else:
# 使用它們的值訪問密鑰(加密的反向)
decipher += list(Dict_MorseCode .keys())[list(Dict_MorseCode .values()).index(citext)]
citext = ''
return decipher
message = "..... ...-- --... ---.. ..--- ..... ...-- ---.. ---.. -----"
result = decrypt(message)
print(f'解密后的明文:{result}')三、輸出結(jié)果:
解密后的明文:53782 53880
小魚:我擦~~ 小屌絲,你這可以啊。
小屌絲:啥情況,這不是一串?dāng)?shù)字,我也不懂啊
小魚:你這是鋼鐵直男吧,這么明顯的,你還不懂??
小屌絲:魚哥,別繞彎子了,趕緊告訴我吧,是不是女神想我給她買好吃的了?
小魚:唉~ ~ 真不明白,這么漂亮的妹子,想啥不行,非得想你…
小屌絲:此話當(dāng)真,那我趕緊去哦。
小魚:哎~ 你咋溜得這么快,我還沒說完呢。
3、總結(jié)
看到這里,今天的分享就到這里了。
是不是覺得,摩斯密碼也沒有那么難嘛。
就是幾行代碼的事,太easy了。
以后追女神,是不是又有新套路了…
到此這篇關(guān)于11行Python代碼實現(xiàn)解密摩斯密碼的文章就介紹到這了,更多相關(guān)Python解密摩斯密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
TorchVision Transforms API目標(biāo)檢測實例語義分割視頻類
這篇文章主要為大家介紹了TorchVision Transforms API大升級,支持目標(biāo)檢測、實例/語義分割及視頻類任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
python圖片驗證碼識別最新模塊muggle_ocr的示例代碼
這篇文章主要介紹了python圖片驗證碼識別最新模塊muggle_ocr的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Python實例解析圖像形態(tài)學(xué)運算技術(shù)
形態(tài)學(xué)處理方法是基于對二進制圖像進行處理的,卷積核決定圖像處理后的效果。本文將為大家詳細介紹一下OpenCV中的圖像形態(tài)學(xué),感興趣的可以了解一下2022-03-03
Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法示例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的定義與使用方法,結(jié)合實例形式分析了Python雙向鏈表的概念、原理、使用方法及相關(guān)注意事項,需要的朋友可以參考下2018-01-01

