Татбиқи рамзи ивазкунӣ ва баъзе таҳлилҳои оморӣ

Ҳавасмандкунӣ

Оё шумо дар ин ҷо ҳастед, ки шумо хавотир ҳастед, ки тамоми трафики шумо аз ҷониби ҳукумат бӯй ва таҳлил карда мешавад? Шумо дар ҷои дуруст ҳастед! Дар ин ҷо шумо ҳам рамзкунонии матни худро меомӯзед ва ҳам сӯҳбати махфии касеро, ки бо рамзи ивазкунӣ рамзгузорӣ шудааст, хонед. Бадии кор дар он аст, ки дар ниҳоят шумо мутмаин хоҳед шуд, ки ҳама чатҳои шумо дар WhatsApp ба осонӣ рамзкушоӣ карда мешаванд (мутмаин ин дуруст нест, Facebook тасмим гирифт, ки тақрибан 40 сол пеш аз рамзи ивазкунандаи WhatsApp истифода набарад). Мо рамзи ивазкуниро дар Python татбиқ мекунем ва сипас мо кӯшиш мекунем, ки кодро бо истифода аз омор вайрон кунем. Ақли зебо

Рамзи ивазкунӣ

Википедиа мегӯяд:

Дар криптография шифри ивазкунанда усули рамзкунонӣ мебошад, ки ба воситаи он воҳидҳои матни оддӣ мувофиқи системаи собит бо матни рамзӣ иваз карда мешаванд; “Воҳидҳо” метавонанд ҳарфҳои ягона (аз ҳама маъмул), ҷуфтҳои ҳарфҳо, сегонаҳои ҳарфҳо, омехтаҳои дар боло зикршуда ва ғайра бошанд. Қабулкунанда матнро тавассути иҷрои ивазкунии баръакс мефаҳмонад.

Ба ибораи дигар, ҳама ҳарфҳои «А» ба «В» иваз карда мешаванд ва ҳама «Б» бо чизи дигар иваз карда мешаванд. Мо танҳо ҳама ҳарфҳоро омехта мекунем. Ва шахсе, ки матни рамзгузоришударо қабул мекунад, медонад, ки ҳарфҳо бо кадом роҳ омехта мешаванд. Биёед як мисолро бубинем. Шумо ин матнро доред:

Дар шоҳроҳи торик биёбон Боди сард дар мӯи ман Бӯи гарми колитҳо Ба воситаи ҳаво баланд мешавад Ба пеш дар дур Ман нури дурахшанда дидам Сарам вазнин шуду биноам хира шуд Ман маҷбур будам, ки шабро боздорам. Дар он ҷо вай дар назди дар истода буд Ман занги миссияро шунидам Ва ман ба худ фикр мекардам "Ин метавонад биҳишт бошад ё ин метавонад дӯзах бошад Баъд вай шамъро даргиронд Ва вай ба ман роҳ нишон дод Аз долон овозхо шунида мешуданд Ман фикр мекардам, ки онҳо мегӯянд

Ва ин ҳарфҳоро иваз мекунем:

abcdefghijklmnopqrstuvwxyz

аз ҷониби инҳо:

fcpevqkzgmtrayonujdlwhbxsi

Инак, ба чои «а» «ф», ба чои «б» «в» ва гайра менависем. Пас мо ин матни рамзшударо мегирем:

ой f efjt евдвжл згкзбфс бечора bgye gy as zfgj бфя даврр ок порглфд jgdgyk wn lzjowkz lzv fgj wn фзвфе гй лзв egdlfypv г dfb f дзгаавжгйк ргкзл чун звфе кжвб звфхс fye as dgkzl kjvb ega г зфе ло длон qoj лзв йгкзл лзвжв дзв длоое гй лзв eoojbfs г звфже лзв агддгой cvrr fye г бфд лзгытгй' ло асдврк 'lzgd powre cv zvfhvy oj лзгд powre cv зврр. лзвй дзв ргл wn f pfyerv fye дзв дзобве ав лзв бфс лзвжв бвжв хогпвд еобй лзв пожгеож g lzowkzl г звфже лзва дфс

Бо сабабҳои содда, ҳама ҳарфҳо ҳоло хурд мебошанд. Албатта, ин талабот нест.

Амалиёт дар Python

Татбиқи Python осон аст: мо ба ҳар як ҳарф назар мекунем ва агар ҳарф дар алифбо бошад, пас онро бо калид иваз мекунем:

alphabet = "abcdefghijklmnopqrstuvwxyz"  key = "fcpevqkzgmtrayonujdlwhbxsi"  text = "Дар шоҳроҳи биёбони торик шамоли сард дар мӯи ман" result = "" барои ҳарф дар матн: if letter.lower() дар алифбо: натиҷа += калид[alphabet.find(letter.lower())] дигар : натиҷа += ҳарф

чоп (натиҷа) ҳа. Мо тамом шудем. Аммо ин Python аст, пас чаро онро содда накунед?

alphabet = "abcdefghijklmnopqrstuvwxyz"  key = "fcpevqkzgmtrayonujdlwhbxsi"  text = "Дар шоҳроҳи биёбони торик шамоли сард дар мӯи ман" print( "" .join([key[alphabet.find(a)] , агар a дар алифбои дигар барои a дар text.lower() ]))

Амалисозӣ дар JavaScript

Татбиқ дар JavaScript баъзе сохторҳои HTML ва дигарҳоро дар бар мегирад, аз ин рӯ он каме дарозтар аст, гарчанде ки идея як аст:

Инро таҳлил кунед🙂

Пас, чаро Facebook тасмим гирифт, ки ҳама чатҳоро бо рамзи ивазкунӣ рамзгузорӣ накунад? Оё дар ҳақиқат шикастани код осон аст? Шумо ба он чӣ гуна муносибат мекардед? Қувваи бераҳмона чанд вақтро талаб мекунад ва тафтиш кардани он, ки шумо матнро рамзкушо кардаед, ночиз нест, шумо бояд ҳар як калимаро тафтиш кунед ва онро бо баъзе луғат муқоиса кунед. Мушкилоти дигар дар он аст, ки баъзе калимаҳо метавонанд ном бошанд, ба монанди “Калифорния” ва шумо онро намеёбед. Азбаски мо ҳарф ба ҳарф рамзгузорӣ мекунем, рамзкушоӣ кардани он низ ҳамин тавр маъно дорад. Мо шумораи ҳарфҳоро дар «матни муқаррарӣ» ҳисоб мекунем ва мефаҳмем, ки кадом ҳарфҳо бештар вомехӯранд. Бигӯед, ки агар ҳарфи “е” бештар вохӯрда шавад, мо ҳарфи бештарро дар матни рамзгузориамон пайдо мекунем ва онро бо “е” иваз мекунем. Эҳтимол, мо дуруст хоҳем буд. Хуб. Мо чӣ гуна ҳисоб мекунем? Ман матни «Рапсодияи богемӣ»-и Маликаро гирифта, ҳарфҳоро ҳисоб кардам:

воридоти matplotlib.pyplot ҳамчун plt алифбо = "abcdefghijklmnopqrstuvwxyz" plt.bar(рӯйхат(алифбо), [corpus.lower().count(ҳарф) барои ҳарф дар алифбо])

Дар ин ҷо тағирёбандаи корпус дорои матни пурра аст. Дар ниҳоят, мо ин диаграммаро мегирем: Басомади ҳарфҳо дар “Rhapsody Bohemian” Ва ин аст басомади ҳарфҳо дар матни рамзшудаи мо: Басомади ҳарфҳо дар матни рамзгузорӣ Ҳамин тавр, аз ин ҷо, мо метавонем тахмин кунем, ки “e” эҳтимолан бо “v” рамзгузорӣ шудааст ва “o” бо “z”. Биёед ҳарду графикро ҷудо кунем:

пандаҳоро ҳамчун pd ворид кунед df = pd.DataFrame({ "ҳарф": рӯйхат(алифбо), "count": [corpus.lower().count(harf) барои ҳарф дар алифбо] }) df = df.sort_values("шумурдан") plt.bar(df["ҳарф"], df["ҳисоб"])

Ин аст барои корпус (“Рапсодия Bohemian”): Ва ин ҷо барои матни рамзгузорӣ: Пас мо калиди зеринро мегирем:

gpnkvqayftioedzcxbjlshwmru

против калиди аслӣ:

fcpevqkzgmtrayonujdlwhbxsi

Ва ҳоло, ин, албатта, дақиқ нест, 🙁аммо мо ҳадди аққал як ду ҳарфро тахмин кардаем. Ин метавонад нуқтаи ибтидоӣ барои тахмин кардани дигарон бошад. Ҳамин тавр, мо бомуваффақият шикастани ин кодро натавонистем. Ва ман хеле содда будам, ки ин равишро дошта бошам. Ҳамин тавр, ман зуд дар Интернет алгоритмеро ҷустуҷӯ кардам ва фаҳмидам, ки он хеле мураккабтар аст. Ба шумо чӣ кор кардан лозим аст, ҷамъоварӣ кардани омори диграммҳо, квадграммаҳо ва ғайра аст. Ҳамин тавр, мо бояд чизеро омӯзем, ба монанди “ҳарфи А аксар вақт ҳарфи Т пас аз он аст”. Ва барои ин ба мо корпуси калонтар лозим аст. Шояд дафъаи оянда. Баъзан мо ноком мешавем, бале 🙂ман умедворам, ки шумо то ҳол аз ин сафар баҳра бурдед.

Муқаддима: Чӣ тавр ҳал кардани рамзҳои ивазкунандаи оддӣ

Рамзи ивазкунӣ таносуби оддии «як ба як» байни ҳарфҳои калид ва ҳарфҳои паёмест, ки бояд рамзгузорӣ шавад. Ин осонтарин навъи шифр барои шикастан аст ва аз ин рӯ, шумо ин муаммоҳоро дар рӯзномаҳо дар баробари муаммоҳои Судоку хоҳед ёфт. Шояд шумо ҳеҷ гоҳ бо ин муаммоҳо бозӣ накардаед ва мехоҳед бидонед, ки аз куҷо сар кардан лозим аст – Ман умедворам, ки ин дастурамал метавонад ба саволҳои шумо ҷавоб диҳад.

Қадами 1: Криптограммаро ба даст оред

Криптограммаҳоро умуман ёфтан хеле осон аст. Тавре ки қаблан гуфта шуд, онҳоро дар рӯзномаҳо ба осонӣ ёфтан мумкин аст ва ҷустуҷӯи Google метавонад ба шумо криптограммаҳои бештареро диҳад, ки шумо ҳамеша мехоҳед. Намунаи сайти дорои криптограммаҳои зиёд барои бозӣ ин http://www.cryptograms.org/play.php мебошад.

Қадами 2: Усули 1: Дарозии калимаҳо ва аломатҳои пунктуатсия

Агар барои шикастани рамз бо дастӣ каме мушкилтар мебуд, ҳама аломатҳои аломатҳо аз байн бурда мешуданд ва ҳарфҳо бо ҳам омехта мешаванд ё ба «калимаҳои» дарозии якхела тақсим мешаванд. Ба ҷои ин, ин криптограммаҳо барои «осон» сохта шудаанд ва аз ин рӯ, бо дарозии дурусти калима ва аломатҳои пунктуатсия гузошта мешаванд. Ман раванди ҳалли худро бо таҳияи муҳити ҳалли рӯи коғаз оғоз мекунам – усули маро дар тасвири дуюм дидан мумкин аст. Вақте ки ман муносибати ҳарфро пайдо мекунам, ман онро дар алифбои сатри боло қайд менамоям ва рӯйдодҳои ҳарфро дар ҷойҳои баъдӣ пур мекунам. Вақте ки шумо бори аввал ба рамзкушоӣ кардани криптограмма шурӯъ мекунед, шумо мехоҳед калимаҳои якҳарфиро муайян кунед. Забони англисӣ ду калимаи дарозии як ҳарф дорад: «I» ва «a». Донистани ин, шумо метавонед барои иваз кардани ҳарфи аввали худ тахмини оқилона кунед. Пас аз анҷом, шумо ба калимаҳои ду ҳарфӣ ва се ҳарфӣ мегузаред. Муносибатҳои байни ҳарфҳоро ҷустуҷӯ кунед. Масалан, агар шумо як калимаи ду ҳарфӣ, “eq”, як калимаи сеҳарфӣ, “qys” ва калимаи чаҳор ҳарфӣ “qyiq” -ро бинед, як фарзияи оқилона калимаи аввал метавонад “он” бошад. Калимаи дуюм метавонад «он» бошад ва калимаи сеюм метавонад «он» бошад, зеро инҳо калимаҳои маъмуланд. Нуқтаи калидӣ дар ин ҷо фикр кардан дар бораи калимаҳои умумӣ ва ба муносибатҳои ҳарфҳои байни калимаҳо назар кардан аст, то тахмин кунед. Контрактҳо инчунин ивазкуниҳоро осон мекунанд. Агар шумо ихтисороти такрориро бинед, ҳарфи басташуда эҳтимолан “s” аст, гарчанде он метавонад “d” ё “m” бошад. Ду қарордодҳои ҳарфӣ метавонанд «re», «ll» ё «ve» бошанд. Тавассути ин равандҳо ҳарчи бештар калимаҳоро ҷамъ кунед, бо истифода аз ёрирасонҳо ба монанди http://www.morewords.com/wordsbylength/ барои тахминҳо ва ҳалли калимаҳо. Ман ин равандро як усули нисбатан суст, вале боэътимоди ҳалли криптограммаҳои рӯзномаҳо донистам. СПОЙЛЕР: Қадами навбатӣ раванди ҳалли рамзҳои аввалро дар криптограммаи рӯзнома дар боло нишон медиҳад.

Қадами 3: Ҳалли рамзи аввалини тасвиршуда

Шумо мефаҳмед, ки ман чанд ҳарфро дар ин ҷо ва он ҷо пазмон шудам, аммо вақте фаҳмидам, ки онҳо дар раванди ивазкунӣ пазмон шудаанд, ман онҳоро пур кардам. Барои ҳалли ин рамз тақрибан даҳ дақиқа вақт лозим буд.

Қадами 4: Усули алтернативӣ: Басомади ҳарф

Сабаби аслии ҳалли ин қадар осон будани рамзҳои ивазкунӣ ба пешгӯии басомади ҳар як ҳарф марбут аст. Паёми дарозтаре, ки бо истифода аз рамзгузории ивазкунанда шиканад, осонтар аст, зеро намунаҳои бештар мавҷуданд. Дар тасвири аввал, шумо тасвиреро хоҳед дид, ки басомадҳои ҳарфҳоро нишон медиҳад – ман ин гистограммаро бо истифода аз мақолаи Википедиа сохтаам, ки 50 000 ҳарфро интихоб кардаам. Агар шумо дар Google диаграммаҳои басомади ҳарфҳоро ҷустуҷӯ кунед, шумо қитъаҳои шабеҳро дар мавҷудият хоҳед ёфт. Тасвири дуюм басомади ҳарф аз рамзест, ки ман дар қадами қаблӣ ҳал карда будам. Тавре ки шумо мебинед, ҳарфҳои «p» ва «j» баландтарин сатҳи пайдоиш доранд. Фарзияи оқилона ин аст, ки як ҳарф ба “e” ҳарфи маъмултарин ва дигаре бояд ба “t” ҳарфи дуввуми маъмултарин мувофиқат кунад. Шумо метавонед омезиши усули қаблии ҳал-ба-дастро бо усули басомади ҳарф истифода баред, то криптограммаҳоро зудтар ҳал кунед. ——————————————— Ман файли иҷрошавандаи .jar-ро, ки ман навиштаам, дохил кардам, ки шумо метавонед барои таҳлили басомадҳои ҳарфҳо ва тавлиди қитъаҳое, ки ман дар боло тасвир кардаам, истифода баред. Файлҳои манбаъ дар файли .jar бастабандӣ карда мешаванд, агар шумо хоҳед, ки онҳоро истихроҷ кунед. Интихобан, шумо метавонед танҳо рамзи сарчашмаро зеркашӣ кунед, ки ман онро дар ин ҷо замима кардаам.

Қадами 5: Дешифровка муборак!

Агар шумо саволҳо дошта бошед, лутфан онҳоро дар шарҳҳо пурсед! Аввалин шуда мубодила кунед

Тавсияҳо


Leave a comment

Your email address will not be published. Required fields are marked *