XOR 암호기 — 단일 바이트 무차별 대입

텍스트나 16진수를 반복 키로 XOR하고 결과를 16진수·텍스트로 확인하거나, 256개 키를 모두 시도해 출력 가능한 문자 비율로 순위를 매기는 단일 바이트 해독을 지원합니다.

출력 (16진수)
결과가 여기에 표시됩니다…
출력 (텍스트)
결과가 여기에 표시됩니다…

256개의 단일 바이트 키를 모두 시도하고 출력의 가독성 순으로 정렬합니다 — 가장 유력한 후보가 먼저 나옵니다.

영어 텍스트 위에 반복된 최대 16바이트 키를 찾습니다: 암호문을 키 바이트마다 한 열씩 나눠 열별로 풉니다. 텍스트가 키보다 몇 배는 길어야 합니다.

XOR 암호기란

XOR(배타적 논리합)는 입력의 각 바이트를 키의 바이트와 결합합니다. 텍스트를 입력하거나 16진수를 붙여넣고 키를 텍스트나 16진수로 지정하면 결과가 16진수와 읽기 쉬운 텍스트로 표시됩니다. 인코딩된 결과 칸은 바이트를 10진수 바이트, 8진수 바이트, Latin-1 텍스트로도 쓸 수 있는데, Latin-1 텍스트에서는 위쪽 절반의 바이트가 점 대신 é나 ß 같은 글자로 보입니다. XOR은 대칭이라 같은 키를 다시 적용하면 원본으로 돌아오므로 하나의 도구로 암호화와 복호화를 모두 처리합니다. “파일 열기…”로 어떤 종류의 파일이든 원래 바이트로 읽어 16진수로 입력에 넣을 수 있고, “바이트 다운로드”는 XOR한 바이트를 파일로 저장합니다. 파일 이름은 연 파일 이름에 .xor를 붙이거나, 이미 .xor로 끝나면 떼어 내므로 두 번 XOR한 파일은 원래 이름으로 돌아옵니다.

반복 키 XOR과 단일 바이트 무차별 대입

데이터보다 짧은 키는 순환하며 반복됩니다. 메시지가 단일 바이트 키로 섞였다면 무차별 대입 버튼이 256개 키를 모두 시도하고 가독성 순으로 정렬해 가장 유력한 평문을 먼저 보여줍니다. “반복 키 해독”은 영어 텍스트 위에 반복된 더 긴 키를 찾고, “유력한 키 길이” 표도 함께 그립니다. 시도한 길이마다 같은 열의 바이트끼리 일치하는 비율(일치도 열, 가장 높은 길이에 대한 비율)로 순위를 매기고, 그 길이로 추정한 키를 보여 줍니다.

자주 묻는 질문

XOR은 안전한 암호화인가요?

아니요. 짧거나 반복되는 키의 XOR은 쉽게 깨지며 난독화, CTF 문제, 학습용입니다. 실제 암호화에는 AES 같은 최신 암호를 사용하세요.

16진수 키나 텍스트 키를 쓸 수 있나요?

네. 키 입력란에서 텍스트와 16진수를 전환할 수 있습니다. 텍스트 키는 UTF-8로 인코딩되고, 16진수 키는 2a나 de ad be ef처럼 정확한 바이트를 직접 지정할 수 있습니다.

단일 바이트 무차별 대입은 어떻게 동작하나요?

0부터 255까지 모든 키로 입력을 XOR한 뒤, 결과에서 출력 가능한 ASCII가 차지하는 비율로 점수를 매겨 상위 10개 후보를 보여줍니다. 영문이나 ASCII 평문이면 정답 키가 대체로 맨 위로 올라옵니다. 다만 점수 기준이 ASCII라서, 한글처럼 UTF-8 멀티바이트로 된 평문은 이 순위로 찾아내기 어렵습니다.

한 바이트보다 긴 키도 풀 수 있나요?

네. ‘반복 키 해독’이 영어 텍스트에 반복된 키를 찾아 가장 그럴듯한 후보를 나열하고, 후보마다 바로 쓸 수 있는 버튼을 붙여 줍니다.

파일 전체를 XOR하고 결과를 저장할 수 있나요?

네. “파일 열기…”는 어떤 종류의 파일이든 텍스트로 해석하지 않고 바이트로 읽어 16진수로 입력에 넣고, 입력 형식도 16진수로 바꿉니다. 크기 제한을 넘는 파일은 두 크기를 밝히고 거부합니다. 키를 넣은 뒤 “바이트 다운로드”를 누르면 XOR한 바이트가 이진 파일로 저장되는데, photo.jpg는 photo.jpg.xor가 되고 그 파일을 같은 키로 다시 XOR하면 photo.jpg로 저장됩니다. 직접 입력한 내용은 xor-output.bin으로 저장됩니다.

출력을 10진수·8진수 바이트나 Latin-1로 볼 수 있나요?

네. 출력 형식 목록에 16진수·Base64·2진수 말고도 10진수 바이트, 8진수 바이트, Latin-1 텍스트가 있습니다. 10진수·8진수 바이트는 바이트마다 숫자 하나를 공백으로 띄어 쓰고, Latin-1 텍스트는 바이트마다 Latin-1 글자 하나로 보여 주어 텍스트 칸에서 점으로 나오던 위쪽 절반의 바이트가 é나 ß 같은 글자로 보입니다. 제어 문자는 여전히 점입니다. 기본값은 16진수 그대로이고, 이 셋은 출력 전용이라 입력을 이 형식으로 읽지는 않습니다.