کد مورس روشی است برای انتقال اطلاعات متنی به شکل یک توالی از صدای خاموش روشن، چراغ یا کلیک که می تواند مستقیم توسط یک شنونده ماهر و بدون تجهیزات خاص دریافت و ترجمه شود. این نام به دلیل ساموئل اف. بی مورس ، مخترع تلگراف انتخاب شده است.
الگوریتم این کار بسیار ساده است. هر کاراکتر زبان انگلیسی با یک سری “نقاط” و “خط” یا گاهی اوقات فقط یک “نقطه” یا “خط” و برعکس جایگزین می شود.
رمزگذاری
۱-در صورت رمزگذاری ، هر کاراکتر را از یک کلمه یک به یک بار استخراج می کنیم و آن را با کد مورس مربوطه ذخیره شده در دیتا اصلی جستجو می کنیم.
2-کد مورس را در یک متغیر ذخیره کنید.
3-هنگام رمزگذاری در کد مورس ، باید بین هر حرف و ۱ فاصله و بین هر کلمه ۲ فضای اضافه کنیم.
4-اگر کاراکتر فاصله باشد ، فاصله دیگری را به متغیر نتیجه اضافه کنید. این روند را تا زمانی که کل رشته را طی کنیم تکرار می کنیم.
رمزگشایی
۱-کاراکترها را از رشته استخراج می کنیم تا جایی که فاصله ای پیدا نکنیم.
۲-به محض اینکه فاصله ای پیدا کردیم ، کاراکتر انگلیسی مربوطه را از کد مورس جستجو می کنیم و آن را به متغیری اضافه می کنیم که نتیجه را ذخیره می کند.
۳-دقت داشته باشید که جستجو فاصله مهمترین قسمت از این فرآیند رمزگشایی است. به محض اینکه ۲ فاصله متوالی بدست آوردیم ، فاصله دیگری را به متغیر خود اضافه خواهیم کرد.
۴-آخرین فاصله انتهای رشته به ما کمک می کند تا آخرین ترتیب کاراکترهای کد مورس را شناسایی کنیم.
پیاده سازی
پایتون ساختار داده ای به نام Dictionary را در اختیار شما قرار می دهد که اطلاعات را به صورت key-value ذخیره می کند که برای اجرای رمزگذاری مانند کد مورس بسیار مناسب است. می توانیم اطلاعات کد مورس را در یک Dictionary که در آن (key-value) => (کاراکترهای انگلیسی-کد مورس) ذخیره کنیم. متن ساده (حروف انگلیسی) جای کلیدها را می گیرد و متن رمزنگاری (کد مورس) مقادیر کلیدهای مربوطه را تشکیل می دهد. به مقادیر کلیدها می توانیم از Dictionary به همان کاراکتر مورد نظر دسترسی پیدا کنیم.
Code:
# Python program to implement Morse Code Translator ''' VARIABLE KEY 'cipher' -> 'stores the morse translated form of the english string' 'decipher' -> 'stores the english translated form of the morse string' 'citext' -> 'stores morse code of a single character' 'i' -> 'keeps count of the spaces between morse characters' 'message' -> 'stores the string to be encoded or decoded' ''' # Dictionary representing the morse code chart MORSE_CODE_DICT = { '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':'--..', '۱':'.----', '۲':'..---', '۳':'...--', '۴':'....-', '۵':'.....', '۶':'-....', '۷':'--...', '۸':'---..', '۹':'----.', '۰':'-----', ', ':'--..--', '.':'.-.-.-', '?':'..--..', '/':'-..-.', '-':'-....-', '(':'-.--.', ')':'-.--.-'} # Function to encrypt the string # according to the morse code chart def encrypt(message): cipher = '' for letter in message: if letter != ' ': # Looks up the dictionary and adds the # correspponding morse code # along with a space to separate # morse codes for different characters cipher += MORSE_CODE_DICT[letter] + ' ' else: # ۱ space indicates different characters # and 2 indicates different words cipher += ' ' return cipher # Function to decrypt the string # from morse to english def decrypt(message): # extra space added at the end to access the # last morse code message += ' ' decipher = '' citext = '' for letter in message: # checks for space if (letter != ' '): # counter to keep track of space i = 0 # storing morse code of a single character citext += letter # in case of space else: # if i = 1 that indicates a new character i += 1 # if i = 2 that indicates a new word if i == 2 : # adding space to separate words decipher += ' ' else: # accessing the keys using their values (reverse of encryption) decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT.values()).index(citext)] citext = '' return delattr # Hard-coded driver function to run the program def main(): message = "www.pishronic.ir" result = encrypt(message.upper()) print (result) message = "--. . . -.- ... -....- ..-. --- .-. -....- --. . . -.- ... " result = decrypt(message) print (result) # Executes the main function if __name__ == '__main__': main()
Output:
–. . . -.- … -….- ..-. — .-. -….- –. . . -.- …
مطالب پیشنهادی برای شما
- کار با فایل های اکسل (بخش اول)
- معرفی کتابخانه NumPy در پایتون
- آموزش رابط گرافیکی Tkinter (بخش اول)
- تولید رمز تصادفی با پایتون
- کار با SQLite در پایتون
- معرفی کتابخانه Bokeh در پایتون
- مقدمه ای بر Embedded Linux (بخش اول) - آذر ۲۰, ۱۴۰۳
- تفاوت بین روتر و فایروال - مهر ۱۰, ۱۴۰۳
- مسیریابی استاتیک در ویندوز - مهر ۸, ۱۴۰۳