33. 비트 연산자 ^를 이용한 암호화
어떤 수에 같은 수로 ^ 연산을 두 번 하면 원래 수가 되는 특징이 있어요.
이를 이용하면 간단한 암호화와 복호화를 할 수 있죠.
이처럼 같은 키를 암호화와 복호화에 사용하는 것을 대칭형 암호화라 불러요.
◈ 간단한 대칭형 암호화
#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;
}
[정답] 디딤돌 C언어 33. 비트 연산자 ^를 이용한 암호화