Misja Gynvaela 007

MISJA 007            goo.gl/f6ogMR                  DIFFICULTY: █░░░░░░░░░ [1/10]
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅
Otrzymaliśmy zaszyfrowaną wiadomość. Podobno użyty został potężny algorytm ROTn,
ale ze zmieniającym się kluczem. Klucz podobno zmienia się w prosty do
przewidzenia sposób, więć zostawiamy rozkodowanie wiadomości Tobie:

  KFGS WUSTRX DBZAYE KIGHFL RPNOMS

--

Odzyskaną wiadomość umieśc w komentarzu pod tym video :)
Linki do kodu/wpisów na blogu/etc z opisem rozwiązania są również mile
widziane!

P.S. Rozwiązanie zadania przedstawie na początku kolejnego livestreama.

Po poziomie zadania można uznać, że wspomniany przewidywalny sposób to inkrementacja lub dekrementacja. Zacząłem od napisania funkcji obsługującej ROTn dla zadanej litery i n:

def rotn(c, n)
    case c
    when /\w/
        ((c.ord - 'A'.ord + n) % 26 + 'A'.ord).chr
    else
        c
    end
end

Przetestujmy:

TEXT = 'KFGS WUSTRX DBZAYE KIGHFL RPNOMS'
 
puts (0..(TEXT.size)).map{|n| rotn(TEXT[n], n)}.join
KGIV BAZBAH PONPOV DCBDCJ RQPRQX

Nope. W takim razie kierunek odwrotny:

TEXT = 'KFGS WUSTRX DBZAYE KIGHFL RPNOMS'
 
puts (0..(TEXT.size)).map{|n| rotn(TEXT[n], 52-n)}.join
KEEP ROLLIN ROLLIN ROLLIN ROLLIN

I to by było na tyle. Do następnego 🙂

Leave a Reply

Your email address will not be published.