XOR 암호(XOR cipher), 즉 XOR 암호화는 무차별 대입(brute-force) 공격으로 해독할 수 없는 데이터 암호화 방식입니다.
무차별 대입 공격이란 임의로 생성한 암호화 키를 하나씩 대입해 보며 올바른 키를 찾아내는 방법을 말합니다. XOR 연산의 특성상 올바른 키 없이는 복호화가 사실상 불가능하기 때문에, 이러한 공격에 비교적 강한 면모를 보입니다.
이 암호화 방식을 구현하는 절차는 매우 간단합니다. 먼저 암호화 키(임의의 문자 하나)를 정의한 뒤, 문자열의 모든 문자에 대해 해당 키와 XOR(^) 연산을 수행합니다. 그 결과 문자열 전체가 암호화됩니다.
참고로 XOR 암호화는 대칭 방식이므로, 암호화된 문자열에 동일한 키로 다시 XOR 연산을 적용하면 원래 문자열로 되돌릴 수 있습니다.
암호화 구현 예제 코드
#include<iostream>
#include<string.h>
using namespace std;
void XORChiper(char orignalString[]) {
char xorKey = 'T';
int len = strlen(orignalString);
for (int i = 0; i < len; i++){
orignalString[i] = orignalString[i] ^ xorKey;
cout<<orignalString[i];
}
}
int main(){
char sampleString[] = "Hello!";
cout<<"The string is: "<<sampleString<<endl;
cout<<"Encrypted String: ";
XORChiper(sampleString);
return 0;
}실행 결과
The string is: Hello! Encrypted String: 188;u
위 코드에서는 문자열 "Hello!"를 암호화 키 'T'와 XOR 연산하여 암호화했습니다. 각 문자가 키와 배타적 논리합을 거치면서 다른 문자로 변환되어, 원본 내용을 알아볼 수 없게 됩니다.