摩斯密码加解密
摩斯密碼又叫莫爾斯電碼,摩斯電碼
著名的SOS救難信號用莫爾斯電碼表示為:...---...滴滴滴嗒嗒嗒滴滴滴
一、間隔時間
滴,1t,用.表示
嗒,3t,用-表示
滴嗒間,1t,不用表示
字符間,3t,用空格表示
字間,7t,也就是單詞間,用/表示
二、莫斯編碼字符集
三、莫斯編碼映射
莫斯編碼是一種變長編碼,哈夫曼編碼也是一種變長編碼。莫斯編碼不是哈夫曼編碼,如果字符之間沒有空白,會產生二義性,而哈夫曼編碼不會產生二義性
四、特殊符號
莫斯編碼不是哈夫曼編碼,字符之間沒有3t,而直接混在一起可能會產生歧義。
但是為了提高發送效率,人們規定下面這些字符之間沒有3t,而是幾個字符連在一起
這是一些有特殊意義的點劃組合。它們由二個字母的摩爾斯電碼連成一個使用,這樣可以省去正常時把它們做為兩個字母發送所必須的中間間隔時間。
AR:·—·—·(停止,消息結束)
AS:·—···(等待)
K:—·—(邀請發射信號)(一般跟隨AR,表示“該你了”)
SK:···—·—(終止,聯絡結束)
BT:—···—(分隔符)
···—·(我將重新發送最后一個單詞)
·· ··(同樣)
········(錯誤)
五、常用語
常用語是指一些縮寫,跟現在的網絡用語有點像。
常用語是用一個單詞來表示一個句子,而上面的特殊用語是用一個特殊字符表示一個句子。
六、代碼實現
# -*- coding:utf-8 -*-
__author__ = 'kiven'
__date__ = '2014-06-04'
__version__ = '1.0.0'
# 摩斯密碼表(自己可定義加密方式...)
CODE = {
# 26個字母
'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': '--..',
# 10個數字
'0': '-----', '1': '.----', '2': '..---',
'3': '...--', '4': '....-', '5': '.....',
'6': '-....', '7': '--...', '8': '---..',
'9': '----.',
# 16個標點符號
',': '--..--', '.': '.-.-.-', ':': '---...', ';': '-.-.-.',
'?': '..--..', '=': '-...-', "'": '.----.', '/': '-..-.',
'!': '-.-.--', '-': '-....-', '_': '..--.-', '(': '-.--.',
')': '-.--.-', '$': '...-..-','&': '. . . .','@': '.--.-.'
# 下面還可自行添加密碼字典
}
# print CODE
# 反轉字典(作為解密摩斯密碼的字典)
UNCODE = dict(map(lambda t:(t[1],t[0]),CODE.items()))
# print UNCODE
'''
將字符串轉換成摩斯密碼
params:需要轉換的字符串
'''
def stringToMorseAlphabet(msg):
# message用于保存加密結果
message = ''
# msg = raw_input('Message:')
# msg = 'this is test'
print msg + ' ///對應的摩斯密碼為///',
for c in msg:
if c == ' ':
message += ' '
else:
# upper():將所有小寫字母轉換成大寫字母
message += CODE[c.upper()] + ' '
return message
'''
將摩斯密碼還原成字符串
params:需要還原的摩斯碼
'''
def morseAlphabetToString(morseCode):
# message用于保存解密結果
message = ''
list = morseCode.split(' ')
# print list
print morseCode + ' ///對應的明文為///',
for s in list:
if s == '':
message += ' '
else:
message += UNCODE[s]
return message
# Test
# print stringToMorseAlphabet('I love you')
print morseAlphabetToString(stringToMorseAlphabet('what the fuck!'))
總結
- 上一篇: 科技昨夜今晨 0524:雷军:小米汽车今
- 下一篇: 多功能沙发床品牌推荐