아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Xorxorxor

시간 제한1초메모리 제한1024 MB

요약
키 길이를 모르는 반복 키 XOR 암호문에서 평문이 영어 텍스트라는 점을 이용해 원래 메시지를 복원한다.
난이도

보통10점 중 6점

유형
비트 연산, 완전 탐색, 문자열, 구현
정답자
아직 제출이 없습니다

문제

Måns har kommit på ett briljant chiffer för att skydda sig mot elakingar som försöker läsa hans epost. Hans chiffer fungerar på följande vis. Först använder han teckenkodningen ASCII för att representera varje tecken i sitt mail som ett tal mellan 0-127. Sedan väljer han en nyckel som består av KK bytes i intervallet 0-127. Om nyckeln består av bytes a_0,a_1,a_2,...a_k−1a\_0, a\_1, a\_2, ... a\_{k - 1}, och hans email består av bytes b_0,b_1,b_2,...b\_0, b\_1, b\_2, ... så består krypteringen av bytes k_i=b_i⊕a_(imod  K)k\_i = b\_i \oplus a\_{(i \mod K)}, där ⊕\oplus är en bitwise XOR över de 8 bitarna i byten, och imod  Ki \mod K är den sedvanliga modulo-operationen. Slutligen kodar han varje byte som två tecken i bas 16 (hexadecimalt).

Givet Måns krypterade meddelande, bestäm hur det ursprungliga meddelandet såg ut.

입력

Indata består av ett antal rader - det krypterade meddelandet. Observera att eventuella radbrytningar endast är med för att indata ska bli enklare att skriva, de ska inte tas hänsyn till i problemet.

Varje ursprungligt meddelande består av minst 500 och högst 1050 tecken.

출력

Du ska skriva ut, tecken för tecken, Måns ursprungliga meddelande.

예제1

  1. 예제 1

    입력
    20000000484935021502530d0f1a184b00000000460f1a180d47532d0f1
    a180d0f1a180d0f1a1854462f1a180d48532d0f1a184b00000000486379
    2d0f1a1854462f1a180d475d45460f1a180d52530d0f1a184b000000004
    849350215025340460f1a180d494e4b00000000486335021502530d0f1a
    184b00000000464115021502564b000000004f4915021502530d0f1a184
    b000000004849352235225d6100000000460f1a180d49150215025f4b00
    000000460f1a180d567961442f1a180d4915021502530d0f1a18494a491
    5021502530d0f1a1845462f1a180d49150215024c4b20000000460f1a18
    0d49150215025d616c2f1a180d0f1a180d0f1a180d0f1a180d1a1502150
    25d6120000000000000000000000000000000150f1a180d47792d0f1a18
    0d0f1a180d0f1a180d0f1a1818000000004863350215021502150215021
    50215021502000d0f1a18456c2f1a180d0f1a180d0f1a180d0f1a180d1a
    150215025d6120000000000000000000000000000000150f1a180d47796
    1200000004658494b20000000460f1a180d45530d0f1a184b0000000047
    4935021502535122633502150253595c49350215025f4b00000000460f1
    a180d4949436c2f1a180d494251462f1a180d475d45462f1a180d491502
    15024c4b5c40792d0f1a184b5453532d0f1a184b00000000460f1a180d4
    5530d0f1a184b00000000486335021502535a5c4935021502530d0f1a18
    47460f1a180d0f1a180d4948426c2f1a180d494151462f1a180d4915021
    5025335386335021502535a5c4935021502530d0f1a184b00000000460f
    1a180d48526120000000465b494b20000000460f1a180d4915021502535
    75563792d0f1a184b00000000460f1a180d45530d0f1a184b0000000048
    49350215025e024b0f1a180d4415021502524b20000000460f1a180d475
    32d0f1a1847460f1a180d49150215025d61200000004863
    
    예상 출력
    Fisk. Fisk fisk fisk fisk. Fiskfiskfisk? Fisk! Fisk fisk.
    
    Fisk? Fisk... fisk; fisk fisk. Fisk + fisk = fisk.
    Fisk fisk fisk (fisk% fisk) fisk fisk fisk. FISK.
    fisk fisk fisk, fisk fisk?
    
    "Fisk fisk fisk", fisk fisk. Fisk fisk? Fisk fisk fisk.
    
    Fiskfiskfiskfisksfisk.
    Fiskfiskfiskfisksfisk.
    Fiskfiskfiskfisksfisk.
    Fiskfiskfiskfisksfisk.
    Fiskfiskfiskfisksfisk.
    Fiskfiskfiskfisksfisk.
    
    Fisk 1: Fisk fisk, fisk fisk! Fisk :D
    Fisk 2: Fisk, fisk fisk :(
    Fisk 1: Fisk... Fisk fisk? :)
    Fisk 2: Fisk fisk fisk, fisk fisk.
    Fisk 1: Fisk fisk, fiskfisk ;)
    Fisk 2: Fisk fisk ^^
    Fisk 1: Fisk fisk fisk fisk!!
    Fisk 2: Fisk fisk fisk <3
    
    Fisk fisk fisk, fisk fisk. Fisk-i-fisk-fisk! Fisk fisk. Fisk, fisk fisk.
    Fisk.