[Dreamhack - 암호학 level 1] SingleByteXor (정답O)

0_0·2022년 12월 9일
0

Dreamhack

목록 보기
2/3

암호학 level 1

SingleByteXor

어느날, 살인사건이 일어났다.
살인 사건의 유일한 증거물은 쓰여있는 쪽지에는, 다음과 같이 적혀있었다.
54586b6458754f7b215c7c75424f21634f744275517d6d
크립이에게 주어진 단서는, 쪽지의 내용과 이것이 어떤 단일바이트와 XOR해서 만들어진 암호라는 단서 뿐.
과연 크립이는 범인을 찾을 수 있을 것인가…!
-flag 타입은 DH{message}입니다


XOR

  • A^B = C 에서 두 값를 알고있다면 다른 값도 알 수 있다.

  • [2진수] 입력 중 1이 홀수인 경우, 참.
    0 XOR 0 = 0
    0 XOR 1 = 1
    1 XOR 0 = 1
    1 XOR 1 = 0

  • [16진수]
    0x41을 0x3C로 XOR = 0x7D
    (0100 0001 XOR 0011 1100 = 0111 1101)


XOR을 이용한 암호화

  • 암호화 : 평문을 16진수로 변환 -> 키와 XOR 연산
  • 복호화 : 암호문을 키로 XOR
  • 특징
    -- 빠른 속도로 암호화/복호화 가능.
    -- 키의 크기와 키를 알아내기 쉽다.

SingleByteXor

단일바이트의 키로 암호화 -> 256(=2^8)가지 경우 존재
-> 반복문을 이용해서 XOR


문제에서..

(16진수)
54 58 6b 64
58 75 4f 7b
21 5c 7c 75
42 4f 21 63
4f 74 42 75
51 7d 6d

  • c언어 반복문을 이용해서 코드 구성
    -- 문자 배열에 16진수를 넣은 후, 1부터 255까지를 반복문을 통해 XOR 연산
    (0으로 XOR 하면 원본 그대로이기 때문에 0은 제외하고 1부터 255까지 반복)
  • 코드 결과

    -- 15번째에 DH{ } 형태 발견


    !! 정답 스포 주의 !!















정답 : DH{tHe_k1LleR_1s_dReAm}



12월 7일 스터디 피드백

  • 파이썬 공부 -> 파이썬으로 코드 해보기
  • 이번달 내로 고전암호 끝내기 (최대한 빨리)
    -- 사실상 암호학은 키 관리, 인증서 집중적
  • 다른 분야도 같이 해서 시야 트기 - 다른 분야 하나 정하기
    -- 네트워크 무조건 필수
  • 암호학 경진대회

0개의 댓글