日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

摩斯密码加解密

發布時間:2024/5/24 综合教程 75 生活家
生活随笔 收集整理的這篇文章主要介紹了 摩斯密码加解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摩斯密碼又叫莫爾斯電碼,摩斯電碼
著名的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!'))

總結

以上是生活随笔為你收集整理的摩斯密码加解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。