언어 자료구조 알고리즘/디딤돌 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. 비트 연산자 ^를 이용한 암호화


반응형