生き恥

生きるは恥だが役に立つ

id0-rsa.pubのメモ【Caesar】

Caesar

シーザー暗号の話。以下問題文。

Should probably stick to the salad 

ZNKIGKYGXIOVNKXOYGXKGRREURJIOVNKXCNOINOYXKGRRECKGQOSTUZYAXKNUCURJHKIGAYKOSZUURGFEZURUUQGZZNKCOQOVGMKGZZNKSUSKTZHAZOLOMAXKOZYMUZZUHKGZRKGYZROQKLOLZEEKGXYURJUXCNGZKBKXBGPJADLIVBAYKZNUYKRGYZZKTINGXGIZKXYGYZNKYURAZOUT

Test Vector
PT: HELLOWORLD
KEY: B
CT: IFMMPXPSME

とりあえず何文字ずらしたら良いかよくわからなかったので総当たりしてみる。

def caesar_decrypt(c, n):
  if ord('A') <= ord(c) and ord(c) <= ord('Z'):
    return chr((ord(c) - ord('A') - int(n)) % 26 + ord('A'))

def main():
  s = 'ZNKIGKYGXIOVNKXOYGXKGRREURJIOVNKXCNOINOYXKGRRECKGQOSTUZYAXKNUCURJHKIGAYKOSZUURGFEZURUUQGZZNKCOQOVGMKGZZNKSUSKTZHAZOLOMAXKOZYMUZZUHKGZRKGYZROQKLOLZEEKGXYURJUXCNGZKBKXBGPJADLIVBAYKZNUYKRGYZZKTINGXGIZKXYGYZNKYURAZOUT'
  for n in range(26):
    p = ''.join((caesar_decrypt(c, n) for c in s))
    print(n, ': ', p)

if __name__ == '__main__':
    main()

なんか読めそうな文章が出てきたでのsubmitしてみたが通らない。キレそう。 THECAESARCIPHERISAREALLYOLDCIPHERWHICHISREALLYWEAKIMNOTSUREHOWOLDBECAUSEIMTOOLAZYTOLOOKATTHEWIKIPAGEATTHEMOMENTBUTIFIGUREITSGOTTOBEATLEASTLIKEFIFTYYEARSOLDORWHATEVERVAJDUXFCPVUSETHOSELASTTENCHARACTERSASTHESOLUTION Discuss The Problemをみると、テキストを読めみたいなことが書いったので読んで指示通りsubmitすれば終了。(めんどくさい)

Read the text that your decryption yields and follow the instructions, that will lead you to the solution we're looking for.