어떤 수에 같은 수로 ^ 연산을 두 번 하면 원래 수가 되는 특징이 있어요.
이를 이용하면 간단한 암호화와 복호화를 할 수 있죠.
이처럼 같은 키를 암호화와 복호화에 사용하는 것을 대칭형 암호화라 불러요.
◈ 간단한 대칭형 암호화
#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. 비트 연산자 ^를 이용한 암호화
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
38. 정리하기 (0) | 2016.01.01 |
---|---|
37. 기타 연산자 (0) | 2016.01.01 |
36. 증감 연산자 (0) | 2016.01.01 |
35. 대입 연산자 (0) | 2016.01.01 |
34. 쉬프트 연산자 (0) | 2016.01.01 |
32. 비트 연산자 (0) | 2016.01.01 |
31. 비교 연산자 (0) | 2016.01.01 |
30. 논리 연산자 (0) | 2016.01.01 |
[디딤돌 C언어] 29. 산술 연산자 (0) | 2016.01.01 |
[디딤돌 C언어] 28. 정리하기 (표준 입출력 개요) (0) | 2016.01.01 |