
go get lukechampine.com/jsteg
jsteg는 JPEG 파일 내부에 데이터를 숨기는 패키지로, 이 기법을
스테가노그래피라고 합니다.
데이터의 각 비트를 이미지의 최하위 비트에 복사하여 숨깁니다.
숨길 수 있는 데이터의 양은 JPEG 파일 크기에 따라 달라지며, 숨겨진 데이터 1바이트당
약 10~14바이트의 JPEG 저장 공간이 필요합니다.
// 기존 JPEG 열기
f, _ := os.Open(filename)
img, _ := jpeg.Decode(f)
// 숨겨진 데이터 추가
out, _ := os.Create(outfilename)
data := []byte("my secret data")
jsteg.Hide(out, img, data, nil)
// 숨겨진 데이터 읽기:
hidden, _ := jsteg.Reveal(out)
데이터는 어떤 식으로도 구분되지 않습니다. 호출자는 hidden의 어떤 바이트를
사용할지 결정해야 합니다. 가장 쉬운 방법은 데이터 앞에 길이를 붙이는 것입니다.
jsteg 명령이 포함되어 있으며, 이 패키지의 함수를 간단히 래핑합니다.
JPEG 파일에서 데이터를 숨기거나 추출할 수 있으며, 입출력 재지정을 지원합니다.
길이 접두사를 자동으로 처리하고, jsteg로 생성된 JPEG를 식별하기 위해
매직 헤더를 사용합니다.
더 좁은 범위의 명령인 slink도 함께 제공됩니다. slink는 JPEG에 공개 키를
삽입하며, 암호 문자열에서 파생된 키 쌍을 사용하여 데이터 서명 및 서명 확인을
쉽게 수행할 수 있습니다. 자세한 설명은 cmd/slink를 참조하세요.
두 명령의 바이너리는 여기에서 찾을 수 있습니다.
이 패키지는 image/jpeg 패키지의 상당량의 코드를 재사용합니다.
해당 코드 사용을 규제하는 BSD 스타일 라이선스는 go_LICENSE 파일에서 확인할 수 있습니다.