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 |
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 |
TEXT = 'KFGS WUSTRX DBZAYE KIGHFL RPNOMS'
puts (0..(TEXT.size)).map{|n| rotn(TEXT[n], n)}.join
KGIV BAZBAH PONPOV DCBDCJ RQPRQX |
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 |
TEXT = 'KFGS WUSTRX DBZAYE KIGHFL RPNOMS'
puts (0..(TEXT.size)).map{|n| rotn(TEXT[n], 52-n)}.join
KEEP ROLLIN ROLLIN ROLLIN ROLLIN |
KEEP ROLLIN ROLLIN ROLLIN ROLLIN
I to by było na tyle. Do następnego 🙂