33. 비트 연산자 ^를 이용한 암호화

C언어 – 비트, 쉬프트 연산자
00:19 비트 연산자
01:22 [실습] 비트 연산자
02:44 xor 연산을 이용한 대칭형 암호화
03:28 [실습] xor 연산을 이용한 대칭형 암호화
05:46 쉬프트 연산자
07:00 [실습] 쉬프트 연산

어떤 수에 같은 수로 ^ 연산을 두 번 하면 원래 수가 되는 특징이 있어요.
이를 이용하면 간단한 암호화와 복호화를 할 수 있죠.
이처럼 같은 키를 암호화와 복호화에 사용하는 것을 대칭형 암호화라 불러요.

◈ 간단한 대칭형 암호화

#include <stdio.h>
int main()
{
    int original = 0x12345678; //원본 데이터
    int cryptograph = 0;  //암호화 데이터
    int decrypt = 0;        //복화화 데이터
    int key = 0x394A38C9;       //암호화와 복호화에 사용할 키
    printf("원본 데이터: %#X \n",original);
    cryptograph = original ^ key; //암호화
    printf("암호화 데이터: %#X \n",cryptograph);
    decrypt = cryptograph ^ key; //복호화
    printf("복호화 데이터: %#X \n",decrypt);
    return 0;
}

◈ 실행 결과

원본 데이터: 0X12345678
암호화 데이터: 0X2B7E6EB1
복호화 데이터: 0X12345678

◈ 기본 연습 (정답 바로가기)
다음 프로그램의 출력 결과를 예측하시오.

#include <stdio.h>
int main()
{
    int a = 0x12345678;
    int b = 0x456789AB;
    int c = 0; 
    int d = 0;   
 
    c = a^b;
    printf("%#X \n", c);
    d = c^b;
    printf("%#X \n", d);   
    return 0;
}