Алгоритм ROT13 (іноді через дефіс — ROT-13) — простий буквений підстановочний шифр, який заміняє літеру на 13 букву в абетці після неї. ROT-13 є різновидом шифру Цезаря, розробленого в Стародавньому Римі.
Оскільки у базовій латинській абетці є 26 букв (2×13), то ROT13 є зворотним, тобто, щоб декодувати ROT13, застосовується один і той же алгоритм, тому одна і та ж дія може бути використаною для кодування і декодування. Алгоритм не забезпечує практично ніякої криптографічної безпеки й часто наводиться як типовий приклад слабкого шифрування.
ROT13 використовується на інтернет-форумах , як засіб для приховування спойлерів, реплік, вирішень головоломок та образливих матеріалів від випадкового погляду. ROT13 вважають «юзнетовим еквівалентом друкування в журналах відповідей на головоломки в перевернутому вигляді». ROT13 надихнув до створення різноманітних буквених і словесних мережевих ігор, а також часто використовується в бесідах груп новин.
Опис
Перетворення може бути зроблено за допомогою таблиці підстановки:
Вхід | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
Вихід | NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm |
Наприклад, в наступному анекдоті, кінцівка була закрита за допомогою алгоритму rot13:
Why did the chicken cross the road? Gb trg gb gur bgure fvqr!
Перетворивши весь текст за допомогою алгоритму rot13, виявляємо відповідь на жарт:
Jul qvq gur puvpxra pebff gur ebnq? To get to the other side!
Python 2.7.13
#-*- coding: cp1251 -*- #rot13 converter print "Ласкаво просимо до Python ROT13\n\n" alpha = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя " #string = "Fraq hf gur pbqr lbh hfrq gb qrpbqr guvf zrffntr" def rot13decoder(): string = raw_input('Будь ласка, введіть повідомлення rot13 для декодування: \n') dic = {} count = 1 for i in alpha: dic[i] = count count+=1 message = "" for i in string: if i.lower() in dic: rot = int(dic[i.lower()]) - 13 if rot == 14: message+=' ' elif rot < 1: base = 32 newrot = base + rot message+=dic.keys()[dic.values().index(newrot)] else: message+=dic.keys()[dic.values().index(rot)] print '\nПовідомлення розшифровано: \n'+message+'\n\nСподіваюся, що вам сподобалося!!' def rot13encoder(): string = raw_input('Будь-ласка, введіть повідомлення для кодування рот13: \n') dic = {} count = 1 for i in alpha: dic[i] = count count+=1 message = "" for i in string: if i.lower() in dic: rot = int(dic[i.lower()]) + 13 if rot == 40: message+=' ' elif rot > 32: rot = rot - 32 base = 0 newrot = base + rot message+=dic.keys()[dic.values().index(newrot)] else: message+=dic.keys()[dic.values().index(rot)] print '\nПовідомлення, закодоване на: \n'+message+'\n\nСподіваюся, що вам сподобалося' endecode = raw_input('1) Введіть 1, щоб кодувати повідомлення\n2) Введіть 2 для розшифрування повідомлення\n') while endecode != '1' or endecode != '2': if endecode == '1': rot13encoder() break elif endecode == '2': rot13decoder() break else: endecode = raw_input('1) 1) Введіть 1, щоб кодувати повідомлення\n2) Введіть 2 для розшифрування повідомлення\n')
Посилання
- Christopher Swenson (17 березня 2008). . John Wiley & Sons. с. 5. ISBN . Архів оригіналу за 24 червня 2016. Процитовано 9 лютого 2017.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm ROT13 inodi cherez defis ROT 13 prostij bukvenij pidstanovochnij shifr yakij zaminyaye literu na 13 bukvu v abetci pislya neyi ROT 13 ye riznovidom shifru Cezarya rozroblenogo v Starodavnomu Rimi Algoritm ROT13 zaminyuye kozhnu bukvu svogo na 13 znakiv dali za alfavitom Napriklad HELLO staye URYYB abo nazad URYYB staye HELLO znovu Oskilki u bazovij latinskij abetci ye 26 bukv 2 13 to ROT13 ye zvorotnim tobto shob dekoduvati ROT13 zastosovuyetsya odin i toj zhe algoritm tomu odna i ta zh diya mozhe buti vikoristanoyu dlya koduvannya i dekoduvannya Algoritm ne zabezpechuye praktichno niyakoyi kriptografichnoyi bezpeki j chasto navoditsya yak tipovij priklad slabkogo shifruvannya ROT13 vikoristovuyetsya na internet forumah yak zasib dlya prihovuvannya spojleriv replik virishen golovolomok ta obrazlivih materialiv vid vipadkovogo poglyadu ROT13 vvazhayut yuznetovim ekvivalentom drukuvannya v zhurnalah vidpovidej na golovolomki v perevernutomu viglyadi ROT13 nadihnuv do stvorennya riznomanitnih bukvenih i slovesnih merezhevih igor a takozh chasto vikoristovuyetsya v besidah grup novin OpisPeretvorennya mozhe buti zrobleno za dopomogoyu tablici pidstanovki Vhid ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzVihid NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm Napriklad v nastupnomu anekdoti kincivka bula zakrita za dopomogoyu algoritmu rot13 Why did the chicken cross the road Gb trg gb gur bgure fvqr Peretvorivshi ves tekst za dopomogoyu algoritmu rot13 viyavlyayemo vidpovid na zhart Jul qvq gur puvpxra pebff gur ebnq To get to the other side Python 2 7 13 coding cp1251 rot13 converter print Laskavo prosimo do Python ROT13 n n alpha abvggdeyezhziiyijklmnoprstufhcchshshyuya string Fraq hf gur pbqr lbh hfrq gb qrpbqr guvf zrffntr def rot13decoder string raw input Bud laska vvedit povidomlennya rot13 dlya dekoduvannya n dic count 1 for i in alpha dic i count count 1 message for i in string if i lower in dic rot int dic i lower 13 if rot 14 message elif rot lt 1 base 32 newrot base rot message dic keys dic values index newrot else message dic keys dic values index rot print n Povidomlennya rozshifrovano n message n n Spodivayusya sho vam spodobalosya def rot13encoder string raw input Bud laska vvedit povidomlennya dlya koduvannya rot13 n dic count 1 for i in alpha dic i count count 1 message for i in string if i lower in dic rot int dic i lower 13 if rot 40 message elif rot gt 32 rot rot 32 base 0 newrot base rot message dic keys dic values index newrot else message dic keys dic values index rot print n Povidomlennya zakodovane na n message n n Spodivayusya sho vam spodobalosya endecode raw input 1 Vvedit 1 shob koduvati povidomlennya n 2 Vvedit 2 dlya rozshifruvannya povidomlennya n while endecode 1 or endecode 2 if endecode 1 rot13encoder break elif endecode 2 rot13decoder break else endecode raw input 1 1 Vvedit 1 shob koduvati povidomlennya n 2 Vvedit 2 dlya rozshifruvannya povidomlennya n PosilannyaChristopher Swenson 17 bereznya 2008 John Wiley amp Sons s 5 ISBN 9780470135938 Arhiv originalu za 24 chervnya 2016 Procitovano 9 lyutogo 2017