이미지 스테가노그래피 — 그림 속에 텍스트 숨기기
LSB 스테가노그래피로 이미지 픽셀에 텍스트 메시지를 숨기고 나중에 다시 꺼내세요 — 결과물은 항상 무손실 PNG입니다.
🔒 모든 처리는 브라우저에서 이뤄지며 이미지와 메시지는 업로드되지 않습니다.
결과는 항상 PNG로 저장됩니다. PNG는 무손실이라 숨긴 비트가 그대로 보존됩니다 — 절대 JPEG나 WebP로 다시 저장하지 마세요. 손실 압축이 픽셀을 다시 써서 메시지를 파괴합니다.
메시지를 숨길 이미지를 끌어다 놓거나 눌러서 고르세요
이미지 안에 비밀 메시지 숨기기
이미지 스테가노그래피는 텍스트 메시지나 파일을 이미지의 빨강·초록·파랑 채널의 최하위 비트(LSB)에 담고, “색 채널당 비트 수”를 올리면 채널마다 아래쪽 비트 여러 개에 나눠 담습니다. 기본 설정에서는 각 픽셀의 색이 256단계 중 최대 한 단계만 바뀌어 눈에는 보이지 않지만, 수천 개의 픽셀에 걸치면 메시지 하나가 들어갈 공간이 생깁니다. 비트 수를 올리면 공간이 그만큼 배로 늘어나는 대신 매끈한 부분에 자글자글한 무늬가 보일 수 있습니다. 꺼내기로 전환해 해당 이미지를 다시 넣으면 숨겨진 텍스트가 그대로 읽히고, 복사하거나 텍스트 파일로 저장할 수 있습니다. 몇 비트로 숨겼는지는 그림 자체에 기록되므로 따로 기억할 필요가 없습니다. 숨기기에서는 “메시지 숨기고 PNG 다운로드” 옆에, 꺼내기에서는 그림을 넣은 뒤에 나타나는 지우기 버튼을 누르면 그림, 메시지나 고른 파일, 비밀번호까지 그 탭이 모두 비워집니다. 그림은 완전히 평범해 보이므로 누군가 찾아보지 않는 한 메시지가 있다는 사실조차 알 수 없는, CTF와 프라이버시의 고전적인 기법입니다.
업로드 없음, 그리고 PNG가 중요한 이유
모든 처리는 브라우저 안의 캔버스에서 이뤄지며 원본 이미지와 비밀 텍스트는 업로드되지 않습니다. 결과는 항상 무손실 PNG로 저장됩니다. JPEG와 WebP는 손실 압축으로 픽셀을 다시 써서 숨긴 비트를 지워 버리기 때문입니다. PNG를 그대로 보관하고 공유하세요. 손실 형식으로 다시 저장하거나 편집하면 메시지가 파괴됩니다. 숨길 원본 이미지는 JPG·WebP 등 브라우저가 여는 어떤 그림이든 되고, PNG여야 하는 것은 결과뿐입니다. 이는 암호화가 아니라 은닉입니다 — LSB 스테가노그래피를 의심하는 사람은 누구나 텍스트를 추출할 수 있으므로, 비밀이 중요하다면 비밀번호를 정하세요 — 그러면 내용이 AES-GCM으로 암호화된 뒤 숨겨집니다. 메시지를 숨기기 전에 사진을 줄이려면 먼저 이미지 일괄 변환에서 크기를 바꾸세요.
자주 묻는 질문
메시지가 이미지에 어떻게 숨겨지나요?
각 문자는 비트로 바뀌고, 그 비트들은 완전히 불투명한 픽셀만 골라 빨강·초록·파랑 값의 최하위 비트에 순서대로 기록됩니다(투명도 채널은 건드리지 않으며, 조금이라도 비치는 픽셀은 건너뜁니다 — 브라우저 캔버스가 그 비트를 그대로 돌려주지 못하기 때문입니다). 마지막 비트만 바꾸므로 각 색은 256 중 최대 1만큼만 달라져 눈에 보이지 않지만, 정확한 패턴은 나중에 그대로 다시 읽어낼 수 있습니다. 이것이 기본값이며, “색 채널당 비트 수”를 올리면 메시지를 채널마다 아래쪽 비트 여러 개에 나눠 쓰고, 맨 앞의 짧은 헤더만은 여전히 마지막 비트에 써서 꺼낼 때 비트 수부터 읽어 냅니다.
왜 결과를 PNG로 유지해야 하나요?
PNG는 무손실이라 모든 픽셀, 따라서 숨겨진 모든 비트가 정확히 보존됩니다. JPEG와 WebP는 손실 형식이라 이미지를 다시 압축하며 픽셀 값을 바꾸는데, 이 과정에서 최하위 비트가 지워져 숨긴 메시지가 파괴됩니다. 절대 손실 형식으로 변환하거나 다시 저장하지 마세요.
이것은 암호화와 같은가요?
아니요. 스테가노그래피는 메시지의 존재를 숨길 뿐 내용을 뒤섞지는 않습니다. 이미지에 LSB로 숨긴 데이터가 있다고 의심하는 사람은 이런 도구로 추출할 수 있습니다. 내용이 민감하다면 비밀번호를 정하세요. 숨기기 전에 페이지가 내용을 암호화합니다.
메시지는 얼마나 길게 숨길 수 있나요?
이미지 크기와 “색 채널당 비트 수”에 따라 다릅니다. 기본 설정에서는 불투명한 픽셀당 3비트(빨강·초록·파랑 채널에 각 1비트)가 들어가고 작은 헤더를 빼면, 불투명한 1000×1000 이미지는 대략 375,000바이트의 텍스트를 담으며, 설정을 한 단계 올릴 때마다 그만큼이 더 늘어납니다. 투명한 부분은 아무것도 담지 못해 로고나 아이콘은 더 적게 들어가며, 카운터가 그 그림의 실제 수치와 지금까지 쓴 양을 보여 주며, 들어가지 않을 메시지는 도구가 삽입을 거부합니다.
숨긴 메시지를 비밀번호로 보호하거나 파일을 숨길 수 있나요?
네. 비밀번호를 정하면 숨기기 전에 내용을 암호화해 비밀번호를 아는 사람만 읽을 수 있습니다. 파일로 바꾸면 어떤 파일이든 숨길 수 있고, 꺼내면 같은 이름으로 같은 바이트가 그대로 나옵니다.
같은 그림에 더 긴 메시지를 넣을 수 있나요?
네. “색 채널당 비트 수”를 기본값보다 올리면 채널마다 메시지를 더 많이 담아 고른 수만큼 공간이 배로 늘고, 바이트 카운터도 따라 바뀝니다. 대신 채널 값이 한 단계보다 크게 바뀌어 매끈한 부분에 자글자글한 무늬로 보일 수 있으니, 들어가는 가장 낮은 값을 고르는 편이 가장 눈에 덜 띕니다. 꺼낼 때는 비트 수를 그림에서 읽으므로 따로 기억하거나 입력할 필요가 없습니다.