언어 자료구조 알고리즘/디딤돌 C언어

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

언제나휴일 2016. 1. 1. 12:06
반응형

 

 

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

 


◈ 간단한 대칭형 암호화
#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