[go: up one dir, main page]

KR101141897B1 - Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method - Google Patents

Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method Download PDF

Info

Publication number
KR101141897B1
KR101141897B1 KR1020040085219A KR20040085219A KR101141897B1 KR 101141897 B1 KR101141897 B1 KR 101141897B1 KR 1020040085219 A KR1020040085219 A KR 1020040085219A KR 20040085219 A KR20040085219 A KR 20040085219A KR 101141897 B1 KR101141897 B1 KR 101141897B1
Authority
KR
South Korea
Prior art keywords
string
character
stored
dictionary
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
KR1020040085219A
Other languages
Korean (ko)
Other versions
KR20060036179A (en
Inventor
전병우
심혁재
Original Assignee
성균관대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교산학협력단 filed Critical 성균관대학교산학협력단
Priority to KR1020040085219A priority Critical patent/KR101141897B1/en
Publication of KR20060036179A publication Critical patent/KR20060036179A/en
Application granted granted Critical
Publication of KR101141897B1 publication Critical patent/KR101141897B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 무손실 데이터 은닉을 위한 부호화 및 복호화에 관한 것으로 보다 상세하게는 무손실 압축방법 중 가장 잘 알려진 LZW 압축을 이용한 무손실 데이터 은닉을 위한 부호화 및 복호화에 관한 것이다. 본 발명은 LZW의 딕셔너리(Dictionary)를 업데이트하는 방식을 이용한 것으로써, 업데이트 되는 문자열의 길이가 은닉하고자 하는 데이터의 패리티와 같은 경우는 그대로 업데이트하며, 다른 경우는 문자열의 길이를 줄이는 강제적 업데이트를 통해 기존 딕셔너리에 존재하는 코드와 같은 코드를 업데이트해 코딩 자체의 중복성을 가지게 하여 데이터를 은닉한다.The present invention relates to encoding and decoding for lossless data concealment, and more particularly, to encoding and decoding for lossless data concealment using LZW compression, which is the best known lossless compression method. The present invention uses a method of updating a dictionary of LZW. If the length of the updated string is the same as the parity of the data to be concealed, it is updated as it is. Update code, such as code that exists in existing dictionaries, to hide data by making the code itself redundant.

데이터 은닉, 무손실 압축, 렘펠 지브 웰치(Lempel-Ziv-Welch; LZW)압축Data concealment, lossless compression, Lempel-Ziv-Welch (LZW) compression

Description

데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을 이용한 부호화기/복호화기{Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method} Encoding / Decoding Method for Data Hiding And Encoder / Decoder using the method}             

도 1은 일반적인 렘펠 지브 웰치(Lempel-Ziv-Welch; LZW) 부호화기의 기능블록 구성도.1 is a functional block diagram of a typical Lempel-Ziv-Welch (LZW) encoder.

도 2는 일반적인 LZW 부호화의 동작 흐름도.2 is an operation flowchart of a general LZW encoding.

도 3은 일반적인 LZW 복호화기의 기능블록 구성도.3 is a functional block diagram of a typical LZW decoder.

도 4는 일반적인 LZW 복호화의 동작 흐름도.4 is an operational flowchart of general LZW decryption.

도 5는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화기의 기능 블록 구성도.5 is a functional block diagram of an encoder for hiding data according to a preferred embodiment of the present invention.

도 6은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 동작 흐름도.6 is an operational flowchart of encoding for data concealment according to a preferred embodiment of the present invention.

도 7은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 핵심 동작 흐름도.7 is a flowchart illustrating the key operations of encoding for data concealment according to a preferred embodiment of the present invention.

도 8은 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화기의 기능 블록 구성도. 8 is a functional block diagram of a decoder for extracting hidden data according to a preferred embodiment of the present invention.                 

도 9는 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화의 동작 흐름도.9 is an operational flowchart of decryption for extracting hidden data according to a preferred embodiment of the present invention.

도 10은 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화의 핵심 동작 흐름도.10 is a flowchart illustrating a key operation of decryption for extracting hidden data according to an exemplary embodiment of the present invention.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

10,100 : 부호화기의 입력버퍼 15,150 : 복화기의 입력버퍼10,100: encoder's input buffer 15,150: decoder's input buffer

20,200 : 부호화기의 제어부 25,250 : 복호화기의 제어부20,200: control unit of the encoder 25,250: control unit of the decoder

30,300 : 부호화기의 저장부 30A,300A : 프리픽스 저장영역30,300: storage unit of the encoder 30A, 300A: prefix storage area

30B,300B : 서픽스 저장영역 35,350 : 복호화기의 저장부30B, 300B: Suffix storage area 35,350: Storage part of decoder

35A,350A : 서픽스 저장영역 35B,350B : 이전코드 저장영역35A, 350A: Suffix storage area 35B, 350B: Previous code storage area

35C,350C : 신규코드 저장영역 40,400 : 부호화기의 딕셔너리35C, 350C: New code storage area 40,400: Dictionary of encoder

50,500 : 부호화기의 출력버퍼 600 : 메시지 은닉부50,500: Encoder output buffer 600: Message concealment unit

650 : 메시지 복호부
650: message decoder

본 발명은 데이터의 은닉을 위한 부호화 및 복호화에 관한 것으로, 보다 상세하게는 원본 데이터의 손실이나 왜곡을 초래하지 않으면서 데이터를 은닉 및 복원할 수 있고 이러한 은닉과 동시에 데이터의 압축을 수행할 수 있는 데이터 은닉 을 위한 부호화/복호화 방법 및 이를 이용한 복호화기/복호화기에 관한 것이다.The present invention relates to encoding and decoding for concealing data, and more particularly, it is possible to conceal and recover data without incurring loss or distortion of original data and to compress data simultaneously with such concealment. The present invention relates to an encoding / decoding method for data concealment and a decoder / decoder using the same.

일반적으로 데이터 은닉이라 알려져 있는 방법은 크게 스테가노그라피(Steganography)와 워터마킹(watermarking)으로 나눌 수 있다. 전자는 데이터가 은닉되었는지의 여부조차 제 삼자에게 노출하지 않는 것을, 후자는 데이터의 은닉 여부가 알려져 있다고 생각하고, 잠재적인 제 삼자의 공격에 강인하여야 한다는 철학을 가지기 때문에 그 목적에 있어 상이할 뿐, 그 은닉을 위한 알고리듬은 상당히 유사하다고 할 수 있다. 데이터 은닉은 원본 데이터에 사용자의 메시지를 은닉하는 것인데, 추가적인 메시지가 원본에 더해지기 때문에 원본 데이터에 약간의 왜곡을 가져오게 된다. 원본 데이터는 그 파일 크기가 크기 때문에 일반적으로 압축 과정을 거치게 되며, 그러한 이유로 압축 방식을 이용한 알고리듬이 원본을 이용한 방법에 비해 효율적이라 할 수 있다. In general, a method known as data concealment can be roughly divided into steganography and watermarking. The former differs only in that purpose because it does not expose the data to third parties even if the data is concealed, and the latter believes that the data is known to be concealed and has a philosophy that it must be robust to potential third party attacks. For this reason, the algorithm for concealment is quite similar. Data hiding is concealing the user's message to the original data, which adds some distortion to the original data as additional messages are added to the original. The original data is generally compressed because of its large file size. For that reason, the algorithm using compression is more efficient than the method using the original.

압축 방식에는 여러 가지가 있으나, 현재 많이 사용되는 압축 방식으로는 렘펠 지브 웰치(Lempel-Ziv-Welch; 이하 "LZW"라 약칭한다) 압축 방식을 들 수 있다. LZW는 현재 모뎀 통신 CCITT V.42 비스 스탠다드, GIF, TIFF 영상 포맷의 압축 모듈, adobe사의 pdf 포맷에서의 영상 압축 등을 위해 사용되고 있다. Although there are various compression methods, a compression method that is widely used at present is Lempel-Ziv-Welch (hereinafter, abbreviated as "LZW") compression method. LZW is currently used for modem communications CCITT V.42 Vis Standard, GIF and TIFF video format compression modules, and Adobe's pdf format compression.

LZW의 압축 방식은 압축할 전체 데이터에 대한 확률 분포를 사전 조사할 필요 없이, 각 문자 스트림들이 입력되는 대로 바로 부호화 할 수 있는 적응적인 무손실 데이터 압축 방식이다. 또한 동일한 코드 테이블이 동적으로 부호화기와 복호화기에 의해 생성되어 별도의 전송을 필요치 않는 딕셔너리(dictionary)를 기반으로 한 압축 방식이다. LZW's compression scheme is an adaptive lossless data compression scheme that can directly code each character stream as it is input, without having to examine the probability distribution over the entire data to be compressed. In addition, it is a dictionary-based compression scheme in which the same code table is dynamically generated by an encoder and a decoder and does not require a separate transmission.                         

LZW 압축에 사용되는 주요 용어는 다음과 같이 정리할 수 있다. The main terms used in LZW compression can be summarized as follows:

- 문자(character) : 압축하고자 하는 데이터의 기본적인 처리단위로서, 오디오, 텍스트, 영상 등을 포괄하는 것으로 알파벳과 같은 글자 그 자체에 국한되는 것은 아니다. 예를 들어 영문 문서 파일에서는 알파벳 하나하나 또는 소정개수의 집합들을 각각 문자라 할 수 있으며, 영상에서는 각 픽셀 또는 소정개수의 픽셀들을 문자로 생각할 수 있다.-Character: A basic processing unit of data to be compressed. It includes audio, text, and video, and is not limited to the letters such as the alphabet itself. For example, in an English document file, each alphabet or a predetermined number of sets may be referred to as characters, and in the image, each pixel or a predetermined number of pixels may be considered as characters.

- 문자열(string) : 하나 또는 연속되는 문자들의 열을 지칭한다.String: A string of one or more characters.

- 문자 스트림(character stream) : 입력으로 주어지는 일련의 문자들로서 입력 데이터 전체를 의미한다. Character stream: A sequence of characters given to an input, meaning the entire input data.

- 코드 (code) : 인덱스라고도 하며, 문자열이 각각 배정되어 있으며 압축된 데이터들에 대한 LZW 부호화기의 출력이 된다. Code: Also known as an index, each string is assigned a string and is the output of the LZW encoder for compressed data.

- 딕셔너리(dictionary) : 코드 테이블(code table)이라고도 하며, 딕셔너리에 있는 문자열 각각에 대해 코드(또는 인덱스)가 배정되어 있다.Dictionary: Also called a code table, a code (or index) is assigned to each string in the dictionary.

- 엔트리(entry) : 딕셔너리 내부에 존재하는 각 문자열과 그 문자열을 지칭하는 코드를 말한다.Entry: Each string in the dictionary and code that refers to that string.

- 은닉 코드 스트림(code stream) : 압축 후에 출력되는 일련의 코드들로 은닉메시지를 포함하여 압축된 데이터를 말한다.
-Hidden code stream: Compressed data, including hidden messages, which is a series of codes that are output after compression.

도1은 일반적인 LZW 부호화기에 대한 기능 블록 구성도이고, 도 2는 일반적인 LZW 부호화의 동작 흐름을 도시한 것이다. 1 is a functional block diagram of a general LZW encoder, and FIG. 2 illustrates an operation flow of a general LZW encoding.                         

도 1 및 도 2를 참조하여 일반적인 LZW 부호화기 및 LZW 부호화에 대하여 설명하기로 한다.A general LZW encoder and LZW encoding will be described with reference to FIGS. 1 and 2.

우선, 제어부(20)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(40) 초기화 과정을 수행한 다음(단계 S100), 압축을 위하여 입력버퍼(10)에 입력되는 입력 문자 스트림에서 하나의 문자를 읽어와 저장부(30)의 프리픽스 저장영역(30A)에 프리픽스로 저장한다(단계 S101). 이어, 상기 제어부(20)는 상기 입력버퍼(10)에 저장된 입력 문자 스트림에서 다음 문자를 읽어와 저장부(30)의 서픽스 저장영역(30B)에 서픽스로 저장한다(단계 S102).First, the controller 20 performs a dictionary 40 initialization process defining a code for each character for all characters that may exist in the input character stream (step S100), and then input buffer (for compression). A character is read from the input character stream inputted at 10) and stored as a prefix in the prefix storage area 30A of the storage unit 30 (step S101). Subsequently, the controller 20 reads the next character from the input character stream stored in the input buffer 10 and stores it as a suffix in the suffix storage area 30B of the storage unit 30 (step S102).

그 후, 상기 제어부(20)는 상기 단계 S101 및 S102에서 읽어와 저장한 프리픽스와 서픽스를 합한 문자열이 딕셔너리(40)내의 엔트리와 매치(match)하는 것이 있는지 확인한다(단계 S103). Thereafter, the control unit 20 checks whether there is a string matching the prefix and suffix read and stored in the steps S101 and S102 matches an entry in the dictionary 40 (step S103).

상기 단계 S103의 확인 결과, 매치가 있는 경우에는 상기 제어부(20)는 현재의 문자열(프리픽스+서픽스)을 상기 저장부(30)의 프리픽스 저장영역(30A)에 프리픽스로 저장한다(단계 S104). 여기서, 프리픽스 저장영역(30A)에는 기 저장된 프리픽스가 상기 단계 S104에서 새로운 프릭픽스(즉, 기존 프리픽스 + 서픽스)로 갱신 저장된다.As a result of checking in step S103, if there is a match, the controller 20 stores the current character string (prefix + suffix) as a prefix in the prefix storage area 30A of the storage unit 30 (step S104). . Here, the pre-stored prefix is updated and stored in the prefix storage area 30A as a new prefix (that is, an existing prefix + suffix) in step S104.

그 후, 상기 제어부(20)의 제어가 단계 S109로 진행하여, 상기 제어부(20)는 입력되어 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. Thereafter, the control of the control unit 20 proceeds to step S109, and the control unit 20 checks whether there are any more characters to read from the input character stream which is input and stored in the input buffer 10.                         

상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(20)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다.If it is confirmed in the step S109 that the character to be read remains, the control of the control unit 20 returns to the above-described S102, and reads the next character from the input character stream which is input and stored in the input buffer 10 and the The control process from step S102 is repeated.

상기 단계 S109에서 읽을 문자가 남아 있지 않은 것으로 확인된 경우, 상기 제어부(20)는 맨 마지막에 남게 되는 저장부(30)의 프리픽스 저장영역(30A)에 저장된 프리픽스에 해당하는 코드를 딕셔너리(40)에서 찾아서 출력버퍼(50)를 통해서 출력신호로서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.If it is determined in step S109 that there are no characters left to read, the control unit 20 outputs a code corresponding to the prefix stored in the prefix storage area 30A of the storage unit 30 remaining at the end of the dictionary 40. Is found and output as an output signal through the output buffer 50 (step S110), and all encoding control ends.

한편, 상기한 단계 S103에서, 현재의 프리픽스와 서픽스를 합한 문자열과 매치되는 문자열이 딕셔너리(40)내에 존재하지 않는 것으로 확인된 경우, 상기 제어부(20)는 현재 저장부(30)의 프리픽스 저장영역(30A)에 저장된 프리픽스에 대응하는 코드를 딕셔너리(40)에서 찾아서 출력버퍼(50)를 통해서 출력신호로서 출력한다(단계 S106).On the other hand, in the above step S103, when it is confirmed that the string matching the string of the sum of the current prefix and the suffix does not exist in the dictionary 40, the controller 20 stores the prefix of the current storage unit 30 The code corresponding to the prefix stored in the area 30A is found in the dictionary 40 and output as an output signal through the output buffer 50 (step S106).

그 후, 상기 제어부(20)는 상기 저장부(30)의 프리픽스 저장영역(30A)과 서픽스 저장영역(30B)에 각각 현재 저장되어 있는 프리픽스와 서픽스를 합하고 이를 딕셔너리(40)내에 새로운 엔트리로 추가하여, 딕셔너리(40)를 업데이트한다(단계 S107). Thereafter, the control unit 20 adds the prefix and suffix currently stored in the prefix storage area 30A and the suffix storage area 30B of the storage unit 30, respectively, and adds a new entry into the dictionary 40. In addition, the dictionary 40 is updated (step S107).

이어, 상기 제어부(20)는 상기 저장부(30)의 프리픽스 저장영역(30A)에 서피스 저장영역(30B)에서 읽어낸 값을 프리픽스로 갱신 저장하여 다음의 압축에 사용하도록 한다(단계 S108). Subsequently, the controller 20 updates and stores the value read from the surface storage area 30B as a prefix in the prefix storage area 30A of the storage unit 30 to be used for the next compression (step S108).                         

그 후, 상기 제어부(20)의 제어는 상기한 단계 S109로 진행하여, 입력되어 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. 상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(20)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다. 한편, 단계 S109에서 읽을 문자가 남아 있지 않는 것으로 확인된 경우, 상기 제어부(20)는 상기 단계 S108에서 저장부(30)의 프리픽스 저장영역(30A)에 갱신 저장된 프리픽스(즉, 서픽스)에 해당하는 코드를 딕셔너리(40)에서 찾아 출력버퍼(50)를 통해서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
Thereafter, the control of the control unit 20 proceeds to step S109 described above to check whether there are any more characters to read from the input character stream that is input and stored in the input buffer 10. If it is confirmed in the step S109 that the character to be read remains, the control of the control unit 20 returns to the above-described S102, and reads the next character from the input character stream which is input and stored in the input buffer 10 and the The control process from step S102 is repeated. On the other hand, if it is determined in step S109 that no character remains to be read, the controller 20 corresponds to the prefix (ie, suffix) updated and stored in the prefix storage area 30A of the storage unit 30 in step S108. The code 40 is searched in the dictionary 40 and output through the output buffer 50 (step S110), and all encoding control ends.

도 3은 일반적인 LZW 복호화기의 기능 블록 구성도이고, 도 4는 일반적인 LZW 복호화의 동작 흐름을 도시한 것이다.3 is a functional block diagram of a general LZW decoder, and FIG. 4 illustrates an operation flow of general LZW decoding.

도 3 및 도 4를 참조하여 일반적인 LZW 복호화기 및 LZW 복호화에 대하여 설명하기로 한다.A general LZW decoder and LZW decoding will be described with reference to FIGS. 3 and 4.

우선, 제어부(25)는 부호화된 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(45) 초기화 과정을 수행한 다음(단계 S300), 부호화기로부터 전송되어온 입력 신호 스트림을 입력버퍼(15)에 저장하여 이로부터 하나의 코드를 읽어와 저장부(35)의 이전 코드 저장영역(35B)에 OCODE(old code)로 저장한 후(단계 S301), 그 코드에 해당하는 문자열을 딕셔너리 (45)에서 찾아서 출력버퍼(55)를 통해서 출력한다(단계 S302).First, the controller 25 performs a dictionary 45 initialization process defining a code for each character for all characters that may exist in the encoded character stream (step S300), and then inputs transmitted from the encoder. The signal stream is stored in the input buffer 15, one code is read therefrom, and stored in the previous code storage area 35B of the storage unit 35 as OCODE (old code) (step S301). The corresponding string is found in the dictionary 45 and output through the output buffer 55 (step S302).

어어, 상기 제어부(25)는 그 다음의 코드를 상기 입력버퍼(15)에서 읽어와 저장부(35)의 신규 코드 저장영역(35C)에 NCODE(new code)로 저장한다(단계 S303). For example, the controller 25 reads the next code from the input buffer 15 and stores it as NCODE (new code) in the new code storage area 35C of the storage unit 35 (step S303).

그 다음, 제어부(25)는 NCODE가 딕셔너리(45)내에 존재하는가를 확인한 후(단계 S304), 존재하는 경우 딕셔너리(45)에서 NCODE에 해당하는 문자열을 읽어 출력버퍼(55)의 스트링영역(STRING)(55A)에 저장하고(단계 S307), 상기 제어부(25)의 제어는 하기의 단계 S308로 진행한다. 여기서, 상기 스트링 저장영역(55A)은 임시적 버퍼로 사용된다. Then, the control unit 25 checks whether the NCODE exists in the dictionary 45 (step S304), and if present, reads the character string corresponding to the NCODE from the dictionary 45, and indicates the string region STRING of the output buffer 55. (Step S307), the control of the controller 25 proceeds to step S308 below. Here, the string storage area 55A is used as a temporary buffer.

이후, 단계 S308에서 상기 제어부(25)는 상기 스트링 저장영역(55A)에 저장된 STRING을 출력하도록 제어하고(단계 S308), 상기 제어부(25)는 상기 출력된 STRING의 첫 문자를 서픽스로 하여 상기 저장부(35)의 서픽스 저장영역(35A)에 저장한다(단계 S309). Thereafter, in step S308, the controller 25 controls to output the STRING stored in the string storage area 55A (step S308), and the controller 25 sets the first character of the output STRING as the suffix. The data is stored in the suffix storage area 35A of the storage unit 35 (step S309).

이어, 상기 제어부(25)는 상기 이전 코드 저장영역(35B)에 저장된 OCODE에 해당하는 문자열과 상기 서픽스 저장영역(35A)에 저장된 서픽스를 합쳐서 딕셔너리(45)에 추가하여 딕셔너리(45)를 업데이트한다(단계 S310).Subsequently, the controller 25 adds the dictionary 45 by adding the character string corresponding to the OCODE stored in the previous code storage area 35B and the suffix stored in the suffix storage area 35A to the dictionary 45. Update (step S310).

이렇게 딕셔너리 업데이트 과정이 끝나면 다음 과정을 위해 상기 제어부(25)는 저장부(35)의 이전 코드 저장영역(35B)에 신규 코드 저장영역(35C)에서 읽어낸 값을 OCODE로서 갱신 저장한다(단계 S312).When the dictionary update process is completed, the controller 25 updates and stores the value read from the new code storage area 35C as an OCODE in the previous code storage area 35B of the storage unit 35 for the next process (step S312). ).

그 후, 상기 제어부(25)는 상기 입력버퍼(15)에서 읽어올 더 이상의 코드가 있는 가를 확인한 후(단계 S313), 코드가 남아 있을 경우 다시 상기한 단계 S303부 터의 과정을 반복하여 수행하고, 그 반면 상기 단계 S313에서 더 이상 코드가 남아 있지 않은 것으로 확인되면 모든 복호화 과정의 제어를 종료한다.Thereafter, the controller 25 checks whether there are any more codes to be read from the input buffer 15 (step S313), and if the code remains, repeats the process from step S303 again. On the other hand, if it is determined in step S313 that no more code remains, the control of all decoding processes ends.

한편, 상기한 단계 S304에서 NCODE가 딕셔너리에 존재하지 않는 경우는 특별한 경우로 딕셔너리(45)에 추가되는 것이 인코딩되는 코드보다 늦다는 것을 의미한다. 이 경우에는 상기 제어부(25)는 상기 저장부(35)의 이전 코드 저장영역(35B)에 저장된 OCODE에 해당하는 문자열을 딕셔너리에서 읽어내어 STRING으로서 출력버퍼(55)의 스트링 저장영역(55A)에 저장하고(단계 S305), 상기 스트링 저장영역(55A)에 저장된 STRING에 이 STRING의 첫 문자와 합하여 그 합한 것을 상기 출력버퍼(55)의 스트링 저장영역(55A)에 새로운 STRING으로 갱신 저장하게 된다(단계 S306). On the other hand, if the NCODE does not exist in the dictionary in step S304 described above, it means that the addition to the dictionary 45 is later than the code to be encoded in a special case. In this case, the controller 25 reads a character string corresponding to the OCODE stored in the previous code storage area 35B of the storage unit 35 from the dictionary and sets it as a STRING in the string storage area 55A of the output buffer 55. (Step S305), the STRING stored in the string storage area 55A and the sum of the first character of the STRING and the sum are updated and stored as a new STRING in the string storage area 55A of the output buffer 55 ( Step S306).

이후, 상기 제어부(25)는 상기 스트링 저장영역(55A)에 저장된 STRING을 출력하도록 제어하고(단계 S308), 상기한 바와 같이 단계 S309~S313의 과정을 수행한다.
Thereafter, the controller 25 controls to output the STRING stored in the string storage area 55A (step S308), and performs the processes of steps S309 to S313 as described above.

한편, 현재 워터마크나 스테가노그라피(Steganography) 등 여러 가지 데이터 은닉 방법들이 제안되어 있는데, 전술한 바와 같이, 이들은 주로 압축 등 신호처리 과정 전에 원본 데이터에 수정을 가하여 데이터 은닉을 수행하며, 결과적으로 원본 정보에 대한 왜곡을 초래하게 되는 단점을 가진다. 이와 같은 기존 방법에는 LZW 압축 방식을 사용하여 GIF 이미지에 데이터를 은닉하는 방법과 색상 정보에 대한 정의(definition)인 팔레트(palette)를 이용하여 데이터를 은닉하는 방법이 있다. 이러한 방법들은 『Ogihara, T. and Kaneda, Y., "Data Embedding into Compressed Data of GIF Images," Proceedings of Pacific Rim Workshop on Digital Steganography 2003』과, 『Fridrich, J., and Du Dui, "A new steganographic methods for palette-based images," IS&T PICS Conference, pp.285-389, 1999』 등에 개시되어 있다.Meanwhile, various data concealment methods, such as watermark and steganography, have been proposed. As described above, they perform data concealment by modifying original data before signal processing such as compression. It has the disadvantage of causing distortion of the original information. Such existing methods include a method of hiding data in a GIF image using LZW compression and a method of hiding data using a palette, which is a definition of color information. These methods include Ogihara, T. and Kaneda, Y., "Data Embedding into Compressed Data of GIF Images," Proceedings of Pacific Rim Workshop on Digital Steganography 2003, and Friedrich, J., and Du Dui, "A new steganographic methods for palette-based images, "IS & T PICS Conference, pp. 285-389, 1999."

LZW 압축 방식을 이용한 방법은 일반적인 LZW 과정에서 코드의 패리티(parity)와 은닉하고자 하는 데이터의 패리티를 일치 시키는 방법이다. 주어진 데이터를 LZW 방식을 이용하여 압축하기 위해 앞서 기술한 바와 같이 입력 문자 스트림에서 딕셔너리내의 엔트리와 가장 긴 길이의 문자열로 매치할 때까지 문자를 하나씩 읽어와, 읽어온 문자열에 해당하는 코드를 출력하게 된다. 이 때, 코드의 패리티가 은닉하고자 하는 데이터의 패리티와 일치한다면 원래의 코드를 그대로 출력하고 그렇지 않다면 읽어온 문자열의 가장 마지막 문자를 이와 가장 유사한 문자로 바꾸게 된다. 만약 마지막 문자를 변경한 문자열과 매치하는 엔트리가 딕셔너리내에 존재하며 이에 해당하는 코드의 패리티와 은닉하고자 하는 데이터의 패리티가 일치한다면 해당 코드를 출력한다. 그러나 변경된 문자열과 매치하는 엔트리가 존재하지 않는다면 마지막 문자열을 제거한 문자열과 일치하는 엔트리의 코드를 찾아 해당 코드의 패리티와 은닉하고자 하는 데이터의 패리티의 일치 여부를 조사한다. 만약 패리티가 서로 일치 한다면 해당 코드를 출력하고, 일치하지 않는다면 마지막 문자를 가장 유사한 문자로 수정하여 이와 같은 과정을 문자열의 길이가 3이 될 때까지 반복한다. 문자열의 길이가 3보다 작아지게 되면 데이터를 은닉하지 않게 된 다. 예를 들어, 은닉하고자 하는 데이터가 ‘0’이며, 읽어온 문자열이 ‘01 01 33 11 02’ 이고 이와 일치하는 엔트리의 코드가 ‘130’일 경우, 은닉하려는 메시지의 패리티와 출력하고자하는 코드의 패리티가 일치하므로 코드 ‘130’을 그대로 출력한다. 하지만 읽어온 문자열과 일치하는 엔트리의 코드가 ‘131’로 은닉하고자 하는 데이터의 패리티와 일치 하지 않을 경우 읽어온 문자열의 맨 마지막 문자인 ‘02’를 이와 가장 유사한 문자로 대체시킨다. 만약 ‘02’와 가장 유사한 문자가 ‘44’이면 기존의 문자열 ‘01 01 33 11 02’를 ‘01 01 33 11 44’로 변경하게 되는 것이다. 이러한 방법으로 변경된 문자열과 매치하는 엔트리가 딕셔너리내에 존재하며, 이에 대한 코드의 패리티가 원하는 값을 갖는다면 해당 코드를 출력하고, 그렇지 않을 경우 마지막 문자를 제거한 ‘01 01 33 11’에 대해 동일한 과정을 반복한다. 그러나 이와 같은 방법의 경우 입력 문자의 강제적인 변형으로 인해 원래의 입력 신호를 왜곡하는 결과를 초래하게 된다.The LZW compression method is a method of matching the parity of the code with the parity of the data to be concealed in a general LZW process. To compress the given data using the LZW method, read characters one by one until the longest string matches the entry in the dictionary from the input character stream, as described above, and output the code corresponding to the read string. do. At this time, if the parity of the code matches the parity of the data to be concealed, the original code is output as it is, otherwise the last character of the read string is replaced with the most similar character. If there is an entry in the dictionary that matches the string that changed the last character and the parity of the corresponding code matches the parity of the data to be hidden, the corresponding code is displayed. However, if there is no entry that matches the changed string, the code of the entry that matches the string from which the last string was removed is checked to see if the parity of the code matches the parity of the data to be concealed. If the parity matches each other, the corresponding code is printed. If not, the last character is changed to the most similar character and the process is repeated until the length of the string is 3. If the length of the string is less than 3, the data is not concealed. For example, if the data to be concealed is' 0 ', the string read is '01 01 33 11 02' and the code of the corresponding entry is' 130 ', the parity of the message to be concealed and the code to be outputted. Since the parity matches, the code '130' is output as is. However, if the code of the entry that matches the read string does not match the parity of the data to be hidden with '131', the last character of the read string, '02', is replaced with the most similar character. If the most similar character to '02' is '44', the existing string '01 01 33 11 02 'is changed to '01 01 33 11 44'. In this way, there is an entry in the dictionary that matches the changed string. If the parity of the code has the desired value, the corresponding code is output. Otherwise, the same process is performed for '01 01 33 11 'with the last character removed. Repeat. However, such a method causes a distortion of the original input signal due to the forced deformation of the input character.

팔레트를 이용하여 데이터를 은닉하는 방법은 다음과 같다. 팔레트내의 모든 색에 대하여 가장 유사한 색과 서로 짝을 이루도록 한 후, 각 쌍 내의 두 가지 색에 대하여 서로 다른 패리티를 부여한다. 은닉하고자 하는 데이터의 패리티와 입력 문자의 패리티가 동일하다면 입력 문자를 그대로 사용하고, 그렇지 않다면 입력 문자와 가장 유사한 색을 가지며 다른 패리티를 갖도록 앞서 짝을 이룬 색으로 변경한다. 예를 들어, 팔레트의 ‘120’에 해당하는 색과 ‘30’에 해당하는 색이 가장 유사할 경우 서로 짝을 이루도록 하며, ‘120’에는 ‘0’ 을 ‘30’에는 ‘1’이란 패리티를 부여한다. 만약 입력 문자의 값이 ‘120’이며 은닉하고 하는 데이터 가 ‘0’이라면 입력 문자를 그대로 사용하고, 은닉하고자 하는 데이터가 ‘1’이라면 이와 동일한 패리티를 가지며 본래의 입력 문자와 가장 유사한 색을 갖는 ‘30’으로 입력 문자를 변경하게 된다. 그러나 이와 같은 방법을 사용할 경우 수신자가 전송측에서 사용한 테이블인, 가장 유사한 색끼리 서로 짝을 이루며 각 색에 패리티를 부여한 테이블과 동일한 가지고 있어야 한다. 뿐만 아니라 앞서 서술한 LZW 압축 방식을 이용한 방법과 마찬가지로 색상 정보의 변형으로 인해 원본 영상에 왜곡이 발생하게 되는 단점을 가지고 있다. The method of hiding data using the palette is as follows. After pairing with the most similar color for all the colors in the palette, different parity is given to the two colors in each pair. If the parity of the data to be concealed and the parity of the input character are the same, the input character is used as it is. Otherwise, the input character is changed to a color paired with the previous pair so that it has the color most similar to the input character and has a different parity. For example, if the color of '120' and '30' of the palette are the most similar, the pairs should be paired with each other.The parity of '0' for '120' and '1' for '30' Grant. If the input character value is '120' and the hidden data is '0', the input character is used as it is. If the data to be hidden is '1', it has the same parity and the color most similar to the original input character. Change the input character to '30'. However, when using this method, the receiver should have the same color as the table used by the sender, paired with each other and having the same parity with each color. In addition, similar to the method using the LZW compression method described above, the distortion of the original image due to the deformation of the color information has a disadvantage.

현재 LZW와 같은 압축 방식 자체를 데이터 은닉 기술에 응용하는 예는 없는데, 이는 LZW로 압축 이후 데이터의 중복성(redundancy)이 거의 존재하지 않기 때문이다. 그러한 이유로 현존하는 대부분의 알고리듬은 압축 이전 데이터 자체에 데이터 은닉을 수행하게 되므로 데이터의 왜곡을 초래하는 결과를 낳게 된다.
Currently, there is no example of applying a compression scheme such as LZW itself to data hiding technology because there is little redundancy of data after compression with LZW. For that reason, most existing algorithms perform data hiding on the data before compression, resulting in data distortion.

본 발명은 상기한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 데이터의 손실이나 왜곡 없이 압축을 수반함과 동시에 원하는 메시지를 은닉할 수 있는 부호화/복호화기 및 부호화/복호화 방법을 제공하고자 함에 그 목적이 있다.SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and an object of the present invention is to provide an encoding / decoder and an encoding / decoding method capable of concealing a desired message at the same time with compression without loss or distortion of data. The purpose is to.

또한, 본 발명의 다른 목적은 본 발명이 제시하는 방식에 의해서 은닉된 메시지를 추출하는 은닉 메시지 추출 방법을 제공하기 위한 것이다.
Another object of the present invention is to provide a hidden message extraction method for extracting a hidden message by the method proposed by the present invention.

본 발명의 각 구성은 데이터 은닉 부호화기와 데이터 은닉 복호화기로 이루어진다. 본 발명은 문자열의 길이를, 은닉하고자 하는 메시지 데이터의 패리티와 일치하도록 변화시킨다. 문자열의 길이란 주어진 하나의 문자열을 구성하는 문자의 개수를 말하고, 새로운 문자열을 딕셔너리내에 하나의 엔트리로 추가하는 것을 업데이트(update)라 한다. 또한 문자열의 길이를 변화시킨다는 것은 그 문자열을 구성하는 문자의 개수를 하나 줄여서 딕셔너리에 추가하는 것을 말하며, 이것을 강제적 업데이트(forced update)라 정의한다. LZW는 그 특성 상 이전에 업데이트되어 딕셔너리 내에 존재하는 문자열이 현재 업데이트할 문자열의 프리픽스가 되기 때문에 문자열의 길이를 하나 줄여 업데이트할 경우, 그와 동일한 문자열이 딕셔너리 내에 언제나 존재하게 된다. 따라서 강제적 업데이트는 이러한 LZW의 특성에 의해 복호화 시에 문제를 발생시키지 않는다. 즉, 본 발명은 기존 LZW와 완전한 호환이 가능하며, 강제적으로 업데이트를 수행함으로써 압축방식 자체에 중복성을 부가하여 데이터를 은닉하는 방식이다. 이 때 데이터를 은닉하여 부호화된 코드 스트림은 데이터를 은닉하지 않고 일반적으로 부호화된 코드 스트림에 비해 파일 크기가 증가하나 그 정도가 경미하다.
Each configuration of the present invention consists of a data concealment encoder and a data concealment decoder. The present invention changes the length of the string to match the parity of the message data to be concealed. The length of a string is the number of characters that make up a given string, and the addition of a new string as an entry in the dictionary is called an update. Also, varying the length of a string means adding it to the dictionary by reducing the number of characters that make up the string, which is defined as a forced update. Because LZW is a string that has been previously updated so that the string in the dictionary is the prefix of the string to be updated, the same string will always be present in the dictionary when the string is shortened and updated. Therefore, the forced update does not cause a problem at the time of decryption due to the characteristics of the LZW. That is, the present invention is completely compatible with the existing LZW, and is a method of concealing data by adding redundancy to the compression method itself by forcibly updating. In this case, the code stream coded by concealing the data does not conceal the data and generally increases the file size compared to the coded code stream, but the degree is small.

이하, 첨부도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세히 설명한다.
Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the present invention.

먼저, 도 5 내지 도 7을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화 방법 및 그 부호화기에 대하여 상세히 설명한다.First, a coding method for data concealment and an encoder thereof according to a preferred embodiment of the present invention will be described in detail with reference to FIGS. 5 to 7.

도 5는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화기의 기능 블록 구성도이고, 도 6은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 동작 흐름도이며, 도 7은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 핵심 동작 흐름도이다.5 is a functional block diagram of an encoder for data concealment according to a preferred embodiment of the present invention, FIG. 6 is an operation flowchart of encoding for data concealment according to a preferred embodiment of the present invention, and FIG. A flowchart of key operations of encoding for data concealment according to a preferred embodiment.

도 5에서 입력버퍼(100), 딕셔너리(400) 및 출력버퍼(500)는 도 1의 입력버퍼(10), 딕셔너리(40) 및 출력버퍼(50)와 실질적으로 동일한 동작을 수행한다. 그러나, 본 발명의 실시 예에서는 사용자가 은닉하고자 하는 은닉 메시지가 입력되어 일시 저장되는 입력버퍼(120)와, 상기 은닉 메시지를 은닉하기 위한 메시지 은닉부(600)가 추가되며, 저장부(300)에 프리픽스의 길이값을 저장하기 위한 프리픽스 길이값 저장영역(300C)과, 상기 입력버퍼(120)에 저장된 은닉 처리되지 않은 잔존하는 은닉 메시지의 비트량을 저장하기 위한 잔존 은닉 메시지 비트량 저장영역(300D)이 추가되고, 제어부(200)의 제어흐름이 변경된 것이 도 1의 구성과 상이한 것이다.In FIG. 5, the input buffer 100, the dictionary 400, and the output buffer 500 perform substantially the same operations as the input buffer 10, the dictionary 40, and the output buffer 50 of FIG. 1. However, in an exemplary embodiment of the present invention, an input buffer 120 in which a hidden message that a user wants to conceal is input and temporarily stored is added, and a message concealment unit 600 for concealing the hidden message is added, and the storage unit 300 is provided. Prefix length value storage area 300C for storing the length value of the prefix in the storage area; and Residual hidden message bit amount storage area for storing the bit amount of the unhidden remaining hidden message stored in the input buffer 120 ( 300D) is added, and the control flow of the controller 200 is changed from that of FIG. 1.

그리고, 도 6에서는 도 2와 비교해 볼 때, 메시지 은닉을 위한 단계 S200이 추가되었으며 그 구체적인 흐름이 도 7에 도시되어 있고, 은닉할 메시지의 비트량을 계산하기 위하여 단계 S100_1이 추가되고, 프리픽스의 길이 값을 연산하기 위하여 단계 S101, S104, S108의 제어 내용이 변경되어 변수 K를 사용한 단계 S101A, S104A, S108A로 표기되었다. In FIG. 6, compared with FIG. 2, step S200 for message concealment is added, and a detailed flow thereof is shown in FIG. 7, and step S100_1 is added to calculate a bit amount of a message to be concealed, and the prefix of In order to calculate the length value, the control contents of steps S101, S104, and S108 were changed to denote steps S101A, S104A, and S108A using the variable K.                     

도 5, 도6 및 도 7을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화 방법 및 부호화기에 대하여 데이터 은닉 과정을 위주로 하여 설명한다.5, 6 and 7 will be described with reference to the data concealment process for the encoding method and the encoder for data concealment according to the preferred embodiment of the present invention.

먼저, 영상 혹은 문서로 이루어진 원본 데이터를 입수하고, 0과 1의 바이너리 열로 표현된 은닉할 메시지를 사용자의 필요에 따라 구성하며, 사용자가 소정의 임계값(THD)을 지정한다. 여기서 임계값(THD)은 메시지를 삽입하기 위해 선택하는 문자열의 길이의 최소값을 조정하기 위하여 사용되는 것으로, 상기 임계값(THD) 이상의 길이를 갖는 문자열에만 메시지를 은닉하게 된다. 이하의 실시 예에서는 상기 임계값(THD)은 부호화 및 복호화의 각 제어프로그램에 동일한 값으로 설정되어 있는 것으로 한다.First, original data consisting of an image or a document is obtained, and a message to be concealed represented by binary columns of 0 and 1 is configured according to a user's needs, and the user designates a predetermined threshold value THD. Here, the threshold value THD is used to adjust the minimum value of the length of the string selected to insert the message. The threshold value THD hides only the message having a length greater than or equal to the threshold value THD. In the following embodiment, the threshold value THD is set to the same value in each control program of encoding and decoding.

그 다음, 일반적인 LZW 부호화의 과정과 마찬가지로 주어진 문자 스트림(character stream)은 입력버퍼(100)에 저장되는 한편, 은닉할 메시지는 입력버퍼(120)에 저장된다. Then, as in the general LZW encoding process, a given character stream is stored in the input buffer 100 while a message to be concealed is stored in the input buffer 120.

제어부(200)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(400) 초기화 과정을 수행한다(단계 S100). 그 다음, 사용자가 은닉하고자 하는 은닉 메시지는 입력버퍼(120)에 입력 저장되어 메시지 은닉 과정을 위해 대기하고 있는 상태에 있게 되는데, 제어부(200)는 상기 입력버퍼(120)에 입력 완료된 은닉하고자 하는 총 은닉 메시지 비트량을 확인하고 그 은닉 메시지 비트량을 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 저장한다(단계 S100_1).
The controller 200 performs a dictionary 400 initialization process defining a code for each character for all characters that may exist in the input character stream (step S100). Then, the user wants to conceal the hidden message is input to the input buffer 120 is in a state waiting for the message concealment process, the control unit 200 is to conceal the input completed to the input buffer 120 The total hidden message bit amount is checked and the hidden message bit amount is stored in the remaining hidden message bit amount storage area 300D of the storage unit 300 (step S100_1).

그 후, 상기 제어부(200)는 압축을 위하여 입력버퍼(100)에 입력 저장된 입력 문자 스트림에서 첫 번째 문자를 읽어와 저장영역(300)의 프리픽스 저장영역(300A)에 프리픽스로서 저장하고, 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 프리픽스 길이값(K)을 "1"로 저장한다(단계 S101A). Thereafter, the controller 200 reads the first character from the input character stream stored in the input buffer 100 for compression, stores the first character in the prefix storage area 300A of the storage area 300, and stores the prefix. The prefix length value K is stored as "1" in the prefix length value storage area 300C of the unit 300 (step S101A).

이어, 상기 제어부(200)는 입력버퍼(100)에 입력 저장된 입력 문자 스트림에서 그 다음 문자를 읽어와 저장부(300)의 서픽스 저장영역(300B)에 서픽스로 저장한다(단계 S102).Subsequently, the controller 200 reads the next character from the input character stream stored in the input buffer 100 and stores it as a suffix in the suffix storage area 300B of the storage unit 300 (step S102).

그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)과 서픽스 저장영역(300B)에 저장된 프리픽스와 서픽스를 합한 문자 열(프리픽스+서픽스)이 딕셔너리(400)내에 매치(match)되는 엔트리가 존재하는지 여부를 살핀다(단계 S103).Subsequently, the control unit 200 has a dictionary (400 + suffix) of a string including the prefix and the suffix stored in the prefix storage area 300A and the suffix storage area 300B of the storage unit 300. In step S103, it is checked whether or not there is an entry that matches.

상기 단계 S103에서 매치되는 엔트리가 있을 경우, 상기 제어부(200)는 상기 프리픽스와 상기 서픽스를 합쳐 상기 저장부(300)의 프리픽스 저장영역(300A)에 프리픽스로서 갱신 저장하고, 프리픽스 길이값 저장영역(300C)에 이전 프리픽스 길이값(K)에 "1"을 가산한 값으로 새로운 프리픽스 길이값(K)으로 갱신 저장한다(단계 S104A). If there is an entry matched in step S103, the controller 200 updates the prefix and the suffix and stores it as a prefix in the prefix storage area 300A of the storage unit 300, and stores the prefix length value storage area. The new prefix length value K is updated and stored at 300C by adding "1" to the previous prefix length value K (step S104A).

그 후, 상기 제어부(200)는 상기 입력버퍼(100)에서 읽어올 문자가 남아 있는지를 확인하여(단계 S109), 상기 입력버퍼(100)에서 읽어올 문자가 남아 있으면 상기한 단계 S102로 되돌아가서 다음 문자를 읽어와 다시 매치되는 엔트리가 딕셔 너리(400)내에 존재하는가를 확인하며(단계 S103), 이 과정은 더 이상의 매치가 없을 때까지 혹은 상기 입력버퍼(100)에서 읽어올 문자가 남아 있지 않을 때까지 반복 수행하게 된다.Thereafter, the controller 200 checks whether there is a character to be read from the input buffer 100 (step S109), and if the character to be read from the input buffer 100 remains, the process returns to the step S102. The next character is read to see if there is an entry again matched in the dictionary 400 (step S103), and the process does not have any characters to read from the input buffer 100 or until there are no more matches. Repeat until not.

상기 단계 S109에서 읽어올 문자가 남아 있지 않은 것으로 확인되면, 상기 제어부(200)는 맨 마지막에 남게 되는 저장부(300)의 프리픽스 저장영역(300A)에 저장된 프리픽스에 해당하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력하고(단계 S110), 모든 부호화 과정의 제어를 종료한다.If it is determined that the character to be read in step S109 does not remain, the control unit 200 the code corresponding to the prefix stored in the prefix storage area 300A of the storage unit 300 remaining at the end of the dictionary 400 Find and output through the output buffer 500 (step S110), and ends the control of all encoding processes.

한편, 상기 단계 S103에서 매치가 있지 않은 것으로 확인되면, 상기 제어부(200)의 제어는 단계 S200으로 진행하게 된다. 이 단계 S200은 메시지 은닉을 위한 단계로서, 그 구체적인 과정은 도 7에 도시되어 있다.On the other hand, if it is determined in step S103 that there is no match, the control of the controller 200 proceeds to step S200. This step S200 is a step for message concealment, the specific process of which is shown in FIG.

도 7의 단계 S201에서, 제어부(200)는 일련의 LZW 부호화 과정 중에, 현재 은닉을 위한 데이터가 상기 입력버퍼(120)에 더 남아 있는지를 확인한다(단계 S201). 이를 위해, 상기 제어부(200)는 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에서 잔존 은닉 메시지 비트량을 읽어와 입력버퍼(120)에 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"보다 큰 지를 확인한다.In step S201 of FIG. 7, the controller 200 checks whether data for current concealment further remains in the input buffer 120 during a series of LZW encoding processes (step S201). To this end, the control unit 200 reads the remaining hidden message bit amount in the storage hidden message bit amount storage area 300D of the storage unit 300 and the remaining hidden message bit amount waiting to be hidden in the input buffer 120. Check if it is greater than "0".

상기 단계 S201에서 삽입하기 위한 메시지가 더 이상 남아 있지 않은 것으로 확인된 경우(즉, 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"인 경우), 상기 제어부(200)의 제어는 일반적인 LZW 부호화 과정을 위하여 단계 S106으로 진행하게 되고, 그렇지 않은 것으로 확인된 경우(즉, 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"보다 큰 경우)는 상기 제어부(200)의 제어는 다음 과정( 단계 S202)으로 진행한다. When it is confirmed in step S201 that the message for insertion is no longer left (i.e., the amount of the remaining hidden message bits waiting for concealment is "0"), the control of the control unit 200 performs a general LZW encoding process. If it is determined that it is not (i.e., the amount of the remaining hidden message bits waiting for concealment is larger than " 0 "), then the control of the controller 200 proceeds to the next process (step S202). Proceed to

상기 단계 S202에서 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 프리픽스 길이값(K)와 소정의 임계값(THD)을 비교한다.In step S202, the controller 200 compares the prefix length value K stored in the prefix length value storage area 300C of the storage unit 300 with a predetermined threshold value THD.

상기 단계 S202에서 프리픽스 길이값(K)이 임계값(THD)보다 크지 않을 경우에 상기 제어부(200)의 제어는 일반적인 LZW 부호화 과정을 위하여 단계 S106으로 진행한다. If the prefix length value K is not greater than the threshold value THD in step S202, the control of the controller 200 proceeds to step S106 for a general LZW encoding process.

한편, 상기 단계 S202에서 프리픽스 길이값(K)이 임계값(THD)보다 클 경우에, 상기 제어부(200)는 상기 입력버퍼(120)에서 은닉 메시지를 한 비트 읽어오고, 상기 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 저장된 기존의 잔존 은닉 메시지 비트량에서 1을 공제한 값을 새로운 잔존 은닉 메시지 비트량으로 하여 상기 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 갱신 저장한다(단계 S203).On the other hand, when the prefix length value K is greater than the threshold value THD in step S202, the control unit 200 reads a hidden message one bit from the input buffer 120, and the storage unit 300 The remaining hidden message bit amount storage area of the storage unit 300 by subtracting 1 from the existing remaining hidden message bit amount stored in the remaining hidden message bit amount storage area 300D as a new remaining hidden message bit amount. Update to 300D) (step S203).

그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 프리픽스 길이값(K)의 패리티와 상기 단계 S203에서 읽어들인 은닉 메시지의 한 비트가 같은 지를 비교한다(단계 S204). 여기서, 패리티의 비교는 프리픽스 길이값(K)의 홀수, 짝수 여부와 은닉할 메시지의 1 비트를 비교한다. 여기서, 패리티는 사용자가 정의함에 따라 짝수에 0을 홀수에 1을 부여할 수도 있고, 반대로 짝수에 1을 홀수에 0을 부여할 수도 있다. 즉, 짝수에 0을 홀수에 1을 부여할 경우 프리픽스 길이값(K)과 은닉할 메시지가 모두 짝수 이거나 홀수여야 패리티가 일치하게 되며, 짝수에 1을 홀수에 0을 부여할 경우 프리픽스 길이값(K)은 짝수 이고 은닉할 메시지는 홀수 이거나, 프리픽스 길이값(K)은 홀수이고 은닉할 메시지는 짝수여야 패리티가 일치하는 것으로 간주한다.Thereafter, the controller 200 compares whether the parity of the prefix length value K stored in the prefix length value storage area 300C of the storage unit 300 is the same as one bit of the hidden message read in step S203. (Step S204). Here, the parity comparison compares an odd number, an even number of the prefix length value K, and one bit of the message to be concealed. In this case, the parity may be assigned to even number 0 and odd number 1, and conversely, even number 1 may be assigned 0 and odd number 0, respectively. In other words, if 0 is assigned to an even number and 1 is assigned to an odd number, both the prefix length value (K) and the message to be concealed must be even or odd parity, and if the even number is 1 and the odd number is 0, the prefix length value ( If K) is even and the message to be concealed is odd, or the prefix length value (K) is odd and the message to be concealed is even, parity is considered to match.

상기 단계 S204에서 두 값의 패리티가 같은 경우 제어부(200)는 다음의 단계 S106으로 진행한다. If the parity of the two values is the same in step S204, the control unit 200 proceeds to the next step S106.

한편, 단계 S204에서 두 값의 패리티가 다른 경우, 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 현재 프리픽스 길이값(K)를 "1"만큼 공제하고 그 공제된 프리픽스 길이값(K)을 새로운 프리픽스 길이값(K)으로 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 갱신 저장한다(단계 S205). 그리고, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 저장된 프리픽스를 읽어와 이 프리픽스의 마지막 문자를 제거하고, 마지막 문자가 제거된 프리픽스를 새로운 프릭픽스로 정의하여 이 새로운 프리픽스를 상기 저장부(300)의 프리픽스 저장영역(300A)에 갱신 저장한다(단계 S206). 또한, 상기 제어부(200)는 상기 단계 S206에서 프리픽스에서 제외된 마지막 문자를 상기 저장부(300)의 서픽스 저장영역(300B)에 새로운 서픽스로서 갱신 저장하고(단계 S207), 상기 제어부(200)의 제어는 다음 단계 S106으로 진행한다. 상기 단계 S207을 통해 갱신된 서픽스는 기존 LZW 부호화 과정에서의 S102과정에서 입력 문자 스트림에서 읽어와 서픽스로 저장된 문자를 대신하게 된다.On the other hand, if the parity of the two values in step S204 is different, the control unit 200 deducts the current prefix length value K stored in the prefix length value storage area 300C of the storage unit by "1" and The deducted prefix length value K is updated and stored in the prefix length value storage area 300C of the storage unit 300 as a new prefix length value K (step S205). The controller 200 reads the prefix stored in the prefix storage area 300A of the storage unit 300 to remove the last character of the prefix, and defines the prefix from which the last character is removed as a new prefix. The new prefix is updated and stored in the prefix storage area 300A of the storage unit 300 (step S206). In addition, the controller 200 updates and stores the last character excluded from the prefix in step S206 as a new suffix in the suffix storage area 300B of the storage unit 300 (step S207), and the controller 200 ) Control proceeds to the next step S106. The suffix updated through step S207 replaces the character read from the input character stream and stored as the suffix in step S102 in the existing LZW encoding process.

그 후, 단계 S106에서 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 저장된 현재의 프리픽스에 대응하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력신호로서 출력한다(단계 S106). Then, in step S106, the control unit 200 searches for the code corresponding to the current prefix stored in the prefix storage area 300A of the storage unit 300 in the dictionary 400 and outputs the output signal through the output buffer 500. It outputs (step S106).                     

이어, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)과 서픽스 저장영역(300B)에 각각 현재 저장되어 있는 프리픽스와 서픽스를 합하고 이를 딕셔너리(400) 내의 새로운 엔트리로 추가하여, 딕셔너리(400)를 업데이트한다(단계 S107). Subsequently, the control unit 200 adds the prefix and the suffix currently stored in the prefix storage area 300A and the suffix storage area 300B of the storage unit 300, and converts the prefix and suffix into a new entry in the dictionary 400. In addition, the dictionary 400 is updated (step S107).

그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 서피스 저장영역(300B)에서 읽어낸 값을 프리픽스로 갱신 저장하여 다음의 압축에 사용하도록 하고, 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 프리픽스 길이값을 "1"로 갱신 저장한다(단계 S108A).Thereafter, the controller 200 updates and stores the value read from the surface storage area 300B as a prefix in the prefix storage area 300A of the storage unit 300 to be used for the next compression. In the prefix length value storage area 300C of 300, the prefix length value is updated and stored as "1" (step S108A).

이어, 상기 제어부(200)의 제어는 상기한 단계 S109로 진행하여, 입력되어 입력버퍼(100)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. 상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(200)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(100)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다. 한편, 단계 S109에서 읽을 문자가 남아 있지 않는 것으로 확인된 경우, 상기 제어부(200)는 상기 단계 S108A에서 저장부(300)의 프리픽스 저장영역(300A)에 갱신 저장된 프리픽스(즉, 서픽스)에 해당하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력신호로서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
Subsequently, the control of the controller 200 proceeds to step S109 described above to check whether there are any more characters to be read from the input character stream that is input and stored in the input buffer 100. When it is confirmed in the step S109 that the character to be read remains, the control of the control unit 200 returns to the above-described S102, and reads the next character from the input character stream inputted and stored in the input buffer 100, The control process from step S102 is repeated. On the other hand, if it is determined in step S109 that no character remains to be read, the controller 200 corresponds to a prefix (ie, a suffix) updated and stored in the prefix storage area 300A of the storage unit 300 in step S108A. The code 400 is searched in the dictionary 400 and output as an output signal through the output buffer 500 (step S110), and all encoding control ends.

다음으로, 도 8 내지 도 10을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화 방법 및 그 복호화기에 대하여 상세히 설명한다.Next, a decoding method for data concealment and a decoder thereof according to a preferred embodiment of the present invention will be described in detail with reference to FIGS. 8 to 10.

도 8은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화기의 기능 블록 구성도이고, 도 9는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화의 동작 흐름도이며, 도 10은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화의 핵심 동작 흐름도이다.8 is a functional block diagram of a decoder for data concealment according to a preferred embodiment of the present invention, FIG. 9 is a flowchart illustrating operation of decoding for data concealment according to a preferred embodiment of the present invention, and FIG. Is a flowchart illustrating a key operation of decryption for data concealment according to a preferred embodiment of the present invention.

도 8에서 입력버퍼(150), 딕셔너리(450) 및 출력버퍼(550)는 도 3의 입력버퍼(15), 딕셔너리(45) 및 출력버퍼(55)와 실질적으로 동일한 동작을 수행한다. 그러나, 본 발명의 실시 예에서는 사용자가 은닉한 은닉 메시지가 출력되는 출력버퍼(555)와, 상기 은닉 메시지를 복호화하여 추출하기 위한 은닉 메시지 복호부(650)가 추가되며, 저장부(350)에 스트링(STRING)의 길이값을 저장하기 위한 STRING 길이값 저장영역(350D)이 추가되고, 제어부(250)의 제어흐름이 변경된 것이 도 3의 구성과 상이한 것이다.In FIG. 8, the input buffer 150, the dictionary 450, and the output buffer 550 perform substantially the same operations as the input buffer 15, the dictionary 45, and the output buffer 55 of FIG. 3. However, in the embodiment of the present invention, an output buffer 555 for outputting a hidden message hidden by a user, and a hidden message decoder 650 for decoding and extracting the hidden message are added to the storage 350. The STRING length value storage area 350D for storing the length value of the string STRING is added, and the control flow of the controller 250 is changed from that of FIG. 3.

그리고, 도 9에서는 도 4와 비교해 볼 때 은닉 메시지의 복호화를 위한 단계 S400이 추가되었으며 그 구체적인 흐름이 도 10에 도시되어 있고, 스트링(STRING)의 길이 값을 연산하기 위하여 단계 S305, S306, S307의 제어 내용이 변경되어 변수 J를 사용한 단계 S305A, S306A, S307A로 표기되다. 또한, 딕셔너리 초기화 단계에서 제어부의 내부의 플래그(FLAG) 설정 레지스터의 플래그 값을 "0"으로 설정하는 과정을 위하여 단계 S300의 제어 내용이 변경되어 단계 S300A로 표기되었다.In FIG. 9, compared to FIG. 4, step S400 for decoding the hidden message has been added, and a detailed flow thereof is shown in FIG. 10, and steps S305, S306, and S307 for calculating the length value of the string STRING are performed. The control content of is changed to denote steps S305A, S306A and S307A using the variable J. In addition, in the dictionary initialization step, the control content of step S300 is changed to set the flag value of the flag FLAG setting register of the control unit to "0", and thus, it is indicated as step S300A.

도 8, 도9 및 도 10을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화 방법 및 복호화기에 대하여 은닉 데이터의 복호화 과정을 위주 로 하여 설명한다.8, 9 and 10, a decoding method and a decoder for data concealment according to a preferred embodiment of the present invention will be described with reference to a decoding process of hidden data.

먼저, 제어부(250)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(450) 초기화 과정을 수행하고 내부의 플래그(FLAG) 설정 레지스터에 플래그(FLAG)를 "0"으로 설정한 다음(단계 S300A), 부호화기로부터 전송되어 입력버퍼(150)에 저장된 입력 신호 스트림에서 하나의 코드를 읽어와 저장부(350)의 이전 코드 저장영역(350B)에 OCODE(old code)로 저장한 후(단계 S301), 그 코드에 해당하는 문자열을 딕셔너리(450)에서 찾아서 출력버퍼(550)를 통해서 출력한다(단계 S302).First, the controller 250 performs a dictionary 450 initialization process that defines a code for each character for all characters that may exist in the input character stream, and sets a flag FLAG in an internal flag FLAG setting register. ) Is set to "0" (step S300A), and one code is read from the input signal stream transmitted from the encoder and stored in the input buffer 150 to OCODE in the previous code storage area 350B of the storage unit 350. After storing as (old code) (step S301), the string corresponding to the code is found in the dictionary 450 and output through the output buffer 550 (step S302).

어어, 상기 제어부(250)는 그 다음의 코드를 상기 입력버퍼(150)에서 읽어와 저장부(350)의 신규 코드 저장영역(350C)에 NCODE(new code)로 저장한다(단계 S303).For example, the controller 250 reads the next code from the input buffer 150 and stores the code as NCODE (new code) in the new code storage area 350C of the storage unit 350 (step S303).

그 후, 상기 제어부(250)는 NCODE가 딕셔너리(450)내에 존재하는가를 확인한 후(단계 S304), 존재하는 경우 딕셔너리(450)에서 NCODE에 해당하는 문자열을 읽어 출력버퍼(550)의 스트링영역(STRING)(550A)에 저장하고, 해당 스트링영역에 저장된 문자열(STRING)의 길이값을 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 저장한 다음(단계 S305), 상기 제어부(205)의 제어는 하기의 단계 S308로 진행한다. Thereafter, the controller 250 checks whether the NCODE exists in the dictionary 450 (step S304), and if present, reads the string corresponding to the NCODE from the dictionary 450 and the string region of the output buffer 550 (step S304). STRING) 550A, the length value of the string STRING stored in the corresponding string area is stored in the string length value storage area 350D of the storage unit 350 (step S305). Control of step 205 proceeds to step S308 below.

한편, 상기한 단계 S304에서 NCODE가 딕셔너리(450) 내에 존재하지 않는 경우는 특별한 경우로 딕셔너리(450)에 추가되는 것이 인코딩되는 코드보다 늦다는 것을 의미한다. 이 경우 상기 제어부(250)는 상기 저장부(350)의 이전 코드 저장영 역(350B)에서 OCODE의 문자열을 읽어내어 STRING으로서 출력버퍼(550)의 스트링 저장영역(550A)에 저장하고, 해당 스트링영역에 저장된 문자열(STRING)의 길이값을 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 저장한다(단계 S306A). On the other hand, if the NCODE does not exist in the dictionary 450 in step S304 described above, it means that the addition to the dictionary 450 is later than the code to be encoded in a special case. In this case, the controller 250 reads the OCODE string from the previous code storage area 350B of the storage 350 and stores the string in the string storage area 550A of the output buffer 550 as a STRING. The length value of the string STRING stored in the area is stored in the string STRING length value storage area 350D of the storage unit 350 (step S306A).

그 후, 상기 제어부(250)는 상기 스트링 저장영역(550A)에 저장된 STRING에 이 STRING의 첫 문자와 합하고 그 합한 것을 새로운 STRING으로서 상기 출력버퍼(550)의 스트링 저장영역(550A)에 갱신 저장하고, 상기 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 기 저장된 스트링(STRING) 길이값에 "1"을 가산한 값을 새로운 스트링(STRING) 길이값으로 갱신 저장한 다음(단계 S307A), 상기 제어부(250)의 제어는 단계 S308로 진행한다. Thereafter, the controller 250 updates and stores the STRING stored in the string storage area 550A with the first character of the STRING and adds the sum to the string storage area 550A of the output buffer 550 as a new STRING. After updating and storing a value obtained by adding "1" to a string length value previously stored in the string length value storage area 350D of the storage unit 350 as a new string length value ( Step S307A), the control of the controller 250 proceeds to step S308.

상기 단계 S308에서 상기 제어부(250)는 상기 스트링 저장영역(550A)에 저장된 STRING을 출력하도록 제어하고, 상기 출력된 STRING의 첫 문자를 서픽스로 하여 상기 저장부(350)의 서픽스 저장영역(350A)에 저장한다(단계 S309). In step S308, the control unit 250 controls to output the STRING stored in the string storage area 550A, and the suffix storage area of the storage unit 350 using the first character of the output STRING as a suffix. 350A) (step S309).

이어, 상기 제어부(250)는 상기 이전 코드 저장영역(350B)에 저장된 OCODE와 상기 서픽스 저장영역(350A)에 저장된 서픽스를 합쳐서 딕셔너리(450)에 추가하여 딕셔너리(450)를 업데이트한다(단계 S310).Subsequently, the controller 250 updates the dictionary 450 by adding the OCODE stored in the previous code storage area 350B and the suffix stored in the suffix storage area 350A to the dictionary 450 (step). S310).

그 후, 상기 제어부(250)는 은닉 메시지 복호화 과정인 단계 S400을 수행하는데, 이 단계 S400에 대해서는 도 10을 참조하여 설명한다.Thereafter, the controller 250 performs step S400, which is a hidden message decoding process, which will be described with reference to FIG.

먼저, 상기 제어부(250)는 내부 플래그 설정 레지스터에서 플래그(FLAG) 정보를 확인하는데(단계 S401), 상기 저장부(350)의 스트링 길이값 저장영역(350D)에 저장된 스트링(STRING) 길이값(J)과 소정의 기 설정된 임계값(THD)이 같은 경우는 해당 스트링(즉, 문자열)에 대하여 LZW 복호화를 통해 딕셔너리(450)내에 업데이트된 문자열이 기존에 하나 이상 존재하는가를 반드시 확인하여야 한다. 하지만 이러한 작업은 현재 스트링이 딕셔너리(450)에 업데이트가 끝난 이후에 가능하기 때문에, 현재 스트링(STRING) 길이값(J)과 입계값(THD)의 동일여부는 다음 과정에서 확인하여야 하며 이를 위해 한 비트의 플래그(FLAG)를 사용한다.First, the controller 250 checks flag FLAG information in an internal flag setting register (step S401). The string length value stored in the string length value storage area 350D of the storage unit 350 is determined. If J) is equal to the predetermined threshold THD, it is necessary to check whether there is at least one updated string in the dictionary 450 through LZW decoding on the corresponding string (ie, the string). However, since this operation is possible after the current string is updated in the dictionary 450, it is necessary to confirm whether the current string string length value (J) and the threshold value (THD) are the same in the following process. Use the flag FLAG.

상기 플래그(FLAG)가 0인 경우는 스트링(STRING) 길이값(J)이 임계값(THD) 보다 큰 경우이며, 플래그(FLAG)가 1인 경우는 스트링 길이값(J)이 임계값(THD)과 같은 경우이다.When the flag FLAG is 0, the string length value J is larger than the threshold value THD. When the flag FLAG is 1, the string length value J is the threshold value THD. )

따라서 단계 S401에서 플래그(FLAG)값이 1인 것으로 확인된 경우, 제어부(250)는 현재 업데이트한 문자열과 동일한 문자열이 딕셔너리(450)에 이미 하나 이상 존재하는 가를 확인한다(단계 S402). 만약 하나 이상의 동일한 문자열을 발견했을 시에는 상기 제어부(250)는 임계치(THD)의 패리티를 읽어오고(단계 S403), 읽어온 임계값(THD)의 패리티를 은닉 메시지로서 출력버퍼(555)를 통하여 출력한후(단계 404) 내부 플래그 설정 레지스터에 플래그(FLAG)를 0으로 설정한다(단계 S405). 한편, 상기 단계 S402에서 동일한 문자열이 딕셔너리(450)에 존재하지 않는 것으로 확인된 경우, 상기 제어부(250)는 메시지가 은닉이 되지 않은 경우이므로 내부 플래그 설정 레지스터에 플래그(FLAG)를 0으로 설정한다(단계 S405). Therefore, when it is determined in step S401 that the flag FLAG value is 1, the controller 250 checks whether one or more strings identical to the currently updated string are already present in the dictionary 450 (step S402). If one or more identical strings are found, the control unit 250 reads the parity of the threshold THD (step S403), and outputs the parity of the read threshold value THD as a hidden message through the output buffer 555. After outputting (step 404), the flag FLAG is set to 0 in the internal flag setting register (step S405). On the other hand, when it is determined in step S402 that the same character string does not exist in the dictionary 450, the controller 250 sets the flag FLAG to 0 in the internal flag setting register because the message is not concealed. (Step S405).

그 후, 제어부(250)는 LZW 복호화 과정에서 저장된 STRING의 길이값(J)과 임계값(THD)의 크기를 비교한다(단계 S406). STRING의 길이값(J)이 임계값(THD)보다 작은 경우 상기 제어부(250)의 제어는 다음의 단계 S312로 진행한다. Thereafter, the controller 250 compares the length value J of the STRING stored in the LZW decoding process with the size of the threshold value THD (step S406). When the length value J of the STRING is smaller than the threshold value THD, the control of the controller 250 proceeds to the next step S312.                     

한편, 상기 단계 S406에서 STRING의 길이값(J)이 임계값(THD)보다 작지 않은 것(즉, 크거나 같은 것)으로 확인된 경우, 제어부(250)는 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같은 지를 확인한다. On the other hand, when it is confirmed in step S406 that the length value J of the STRING is not smaller than (ie, greater than or equal to) the threshold value THD, the controller 250 determines the length value J of the STRING in step S407. ) Is equal to the threshold value THD.

상기 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같지 않은 것으로 확인된 경우(즉, THD보다 STRING의 길이가 큰 경우)는 메시지가 은닉된 경우를 의미하므로, 제어부(250)는 STRING의 길이값(J)의 짝수, 홀수 여부를 나타내는 패리티 값을 추출하고(단계 S409), 이 스트링 길이값(J)의 패리티를 은닉 메시지 비트로서 출력버퍼(555)를 통하여 출력한다(단계 S410).When it is determined in step S407 that the length value J of the STRING is not equal to the threshold value THD (that is, when the length of the STRING is larger than the THD), it means that the message is concealed. Extracts a parity value indicating whether the length value J of the STRING is even or odd (step S409), and outputs the parity of the string length value J through the output buffer 555 as a hidden message bit (step S409). S410).

한편, 상기 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같은 것으로 확인된 경우, STRING이 LZW 복호화 과정을 통해 딕셔너리(450)에 추가된 후, 그와 동일한 문자열이 하나 이상 존재하는가를 확인하여야 한다. 하지만 이 과정은 다음 코드를 읽은 후 수행할 수 있는 과정이므로, 제어부(250)는 단계 S408에서 확인을 위해 플래그(FLAG)값을 1로 설정하고, 하기의 단계 S312로 진행한다.On the other hand, if it is determined in step S407 that the length value J of the STRING is equal to the threshold value THD, after the STRING is added to the dictionary 450 through the LZW decoding process, one or more of the same strings exist. It should be checked. However, since this process can be performed after reading the following code, the controller 250 sets the flag FLAG value to 1 for confirmation in step S408 and proceeds to step S312 below.

상기와 같이 딕셔너리(450) 업데이트 과정(단계 S310) 및 은닉 메시지 복호화 과정(단계 S400)을 수행하고, 다음 과정을 위해 상기 제어부(250)는 저장부(350)의 이전 코드 저장영역(350B)에 신규 코드 저장영역(350C)에서 읽어낸 값을 OCODE로서 갱신 저장한다(단계 S312).The dictionary 450 update process (step S310) and the hidden message decryption process (step S400) are performed as described above, and for the next process, the control unit 250 is stored in the previous code storage area 350B of the storage unit 350. The value read out from the new code storage area 350C is updated and stored as OCODE (step S312).

그 후, 상기 제어부(250)는 상기 입력버퍼(150)에서 읽어올 더 이상의 코드가 있는 가를 확인한 후(단계 S313), 코드가 남아 있을 경우 상기 제어부(250)의 제어가 상기한 단계 S303로 되돌아가서 단계 S303부터의 과정을 반복하여 수행하 고, 그 반면 상기 단계 S313에서 더 이상 코드가 남아 있지 않은 것으로 확인되면 모든 복호화 과정의 제어를 종료한다.
Thereafter, the controller 250 checks whether there are any more codes to be read from the input buffer 150 (step S313), and if the code remains, the control of the controller 250 returns to the above step S303. In step S303, the process is repeated, and on the other hand, if it is confirmed in step S313 that no more code remains, the control of all decoding processes ends.

일반적인 LZW부호화와 본 발명에 다른 데이터 은닉을 수행한 LZW부호화를 비교하기 위하여 "abbabbaabbababbabbab"를 압축하는 경우를 표1에 나타냈다.Table 1 shows the case of compressing "abbabbaabbababbabbab" in order to compare general LZW encoding with LZW encoding which performs data hiding according to the present invention.

<표1><Table 1>

LZW 부호화LZW Coding 본 발명의 데이터 은닉을 수행한 LZW 부호화LZW coding with data concealment of the present invention inputinput outputoutput new symbolnew symbol inputinput outputoutput new symbolnew symbol 은닉된 데이터Hidden data aa aa 256 = aa256 = aa aa aa 256 = aa256 = aa bb aa 257 = ab257 = ab bb aa 257 = ab257 = ab bb bb 258 = bb258 = bb bb bb 258 = bb258 = bb aa bb 259 = ba259 = ba aa bb 259 = ba259 = ba bbbb 257257 260 = abb260 = abb bbbb 257257 260 = abb260 = abb aaaa 259259 261 = baa261 = baa aaaa 259259 261 = baa261 = baa bbabba 260260 262 = abba262 = abba bbabba 260260 262 = abba262 = abba 1One baba 257257 263 = aba263 = aba baba 257257 263 = aba263 = aba bbabbbab 262262 264 = abbab264 = abbab bbabbbab 260260 264 = abba264 = abba 1One babbab 258258 265 = bba265 = bba babbab 262262 265 = abbab265 = abbab 00

표1에서는 임계값(THD)을 3으로 설정했고, 길이가 3보다 큰 심볼에 대해서만 데이터 은닉이 가능하게 하였다. 따라서, 코드 인덱스가 256~261, 263를 갖는 심볼들은 그 길이 값이 임계값(THD)보다 크지 않으므로 통상의 업데이트 처리가 수행되었으며, 코드 인덱스가 262, 264, 265를 갖는 심볼들은 그 길이값이 임계값(THD)보다 크므로 데이터 은닉을 수행하기 위하여 심볼 길이를 변화시켰다.In Table 1, the threshold value (THD) is set to 3, and data concealment is possible only for symbols larger than 3 lengths. Therefore, since symbols whose lengths are 256 to 261 and 263 are not larger than the threshold value THD, normal update processing is performed, and symbols having code indices of 262, 264, and 265 have a length value. Since it is larger than the threshold value THD, the symbol length is changed to perform data concealment.

표2에는 상기한 표1과 같이 "abbabbaabbababbabbab"를 압축한 값을 일반적인 LZW복호화와 본 발명에 다른 데이터 은닉 LZW 복호화을 수행한 경우를 표2에 나타냈다. Table 2 shows a case where general LZW decoding of the compressed value of "abbabbaabbababbabbab" as shown in Table 1 above and data hiding LZW decoding according to the present invention are performed.

<표2><Table 2>

LZW 복호화LZW decryption 본 발명의 데이터 은닉을 수행한 LZW 복호화LZW decryption performing data hiding of the present invention inputinput old codeold code outputoutput new table entrynew table entry inputinput old codeold code outputoutput new table entrynew table entry datadata aa aa aa aa aa aa aa 256 = aa256 = aa aa aa aa 256 = aa256 = aa bb aa bb 257 = ab257 = ab bb aa bb 257 = ab257 = ab bb bb bb 258 = bb258 = bb bb bb bb 258 = bb258 = bb 257257 bb abab 259 = ba259 = ba 257257 bb abab 259 = ba259 = ba 259259 257257 baba 260 = abb260 = abb 259259 257257 baba 260 = abb260 = abb 260260 259259 abbabb 261 = baa261 = baa 260260 259259 abbabb 261 = baa261 = baa 1One 257257 260260 abab 262 = abba262 = abba 257257 260260 abab 262 = abba262 = abba 262262 257257 abbaabba 263 = aba263 = aba 260260 257257 abbabb 263 = aba263 = aba 1One 258258 262262 bbbb 264 = abbab264 = abbab 262262 260260 abbaabba 264 = abba264 = abba 00 257257 258258 abab 265 = bba265 = bba bb 262262 bb 265 = abbab265 = abbab

한편, 상기한 실시 예에서는 문자 스트림의 LZW 부호화/복호화시에 데이터를 은닉하는 방식에 대하여 설명하였지만, 본 발명은 디지털 영상 스트림 및 디지털 오디오 스트림 등 적용 가능한 모든 데이터의 LZW 부호화/복호화시에도 마찬가지로 본 발명을 적용하여 데이터를 은닉할 수 있다.In the above-described embodiment, a method of concealing data during LZW encoding / decoding of a character stream has been described. However, the present invention is similarly applied to LZW encoding / decoding of all applicable data such as a digital video stream and a digital audio stream. The invention can be applied to conceal data.

본 발명은 도면을 참조한 특정 실시 예에 한정하여 설명하였지만, 본 발명은 도면과 관련된 특정 실시예에 한정되는 것이 아니라 본 발명의 요지를 벗어나지 않는 범위 내에서 여러 가지로 수정 및 변형하여 실시할 수 있는 것임은 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명할 것이다.
Although the present invention has been described in detail with reference to the drawings, the present invention is not limited to the specific embodiments related to the drawings but may be modified and modified in various ways within the scope of the present invention. It will be apparent to those skilled in the art to which the present invention pertains.

상기한 바와 같이, 본 발명은 무손실 압축방법 중 가장 잘 알려진 LZW 압축과 데이터 은닉 기술을 혼합한 것으로써, 기존 기술에서 발생되었던 원본 데이터의 손실이나 왜곡의 발생을 제거하며, LZW의 본래 목적인 압축을 실행함과 동시에 데 이터의 인증, 부가적인 메시지 전송 등을 데이터 은닉을 통하여 수행할 수 있다.
As described above, the present invention is a combination of LZW compression and data concealment techniques, which is the most well-known lossless compression method, to eliminate the loss or distortion of the original data that occurred in the existing technology, and to reduce the compression that is the original purpose of LZW At the same time, authentication of data and additional message transmission can be performed through data hiding.

Claims (18)

데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법에 있어서,In the Rempel Jib Welch coding method for data concealment, 램펠 지브 웰치 부호화를 위한 문자 스트림 및 데이터 은닉을 수행하기 위한 은닉 메시지를 입력받는 단계; 및Receiving a hidden message for performing text concealment and data concealment for Rampel Jib Welch encoding; And 상기 문자 스트림에 대해 램펠 지브 웰치 부호화를 수행하고 상기 문자 스트림에 대한 램펠 지브 웰치 부호화 결과에 상기 은닉 메시지를 은닉하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법.And performing a Rampel Jib Welch encoding on the character stream and concealing the hidden message in a result of the Rampel Jib Welch encoding on the character stream. 제1항에 있어서, 상기 문자 스트림에 대해 램펠 지브 웰치 부호화를 수행하고 상기 문자 스트림에 대한 램펠 지브 웰치 부호화 결과에 상기 은닉 메시지를 은닉하는 단계는,The method of claim 1, wherein the performing of the Rampel Jib Welch encoding on the character stream and concealing the hidden message in the result of the Rampel Jib Welch encoding on the character stream comprises: 딕셔너리를 초기화하고 상기 은닉 메시지의 비트량을 저장하는 단계;Initializing a dictionary and storing a bit amount of the hidden message; 상기 문자 스트림에서 첫 번째 문자인 제1 문자를 읽어와 프리픽스로 저장하고 프리픽스 길이값을 저장하는 단계; 및Reading a first character, which is a first character, from the character stream, storing the first character as a prefix, and storing a prefix length value; And 상기 문자 스트림에서 상기 제1 문자의 다음 문자인 제2 문자를 읽어와 서픽스로 저장하고 상기 제1 문자와 제2 문자를 합한 문자열이 상기 딕셔너리의 엔트리에 매치되는지 여부를 판단하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법.Reading a second character that is a next character of the first character from the character stream and storing it as a suffix and determining whether a string of the first and second characters matches the entry of the dictionary; Rempel Jib Welch coding method for data hiding. 제2항에 있어서, 상기 문자 스트림에서 상기 제1 문자의 다음 문자인 제2 문자를 읽어와 서픽스로 저장하고 상기 제1 문자와 제2 문자를 합한 문자열이 상기 딕셔너리의 엔트리에 매치되는지 여부를 판단하는 단계는,3. The method of claim 2, wherein a character string read from the character stream, the second character that is the next character of the first character, is stored as a suffix, and the first character and the second character sum to match an entry of the dictionary. The judging step is 상기 문자열이 상기 딕셔너리의 엔트리에 매치되는 경우, 상기 프리픽스와 상기 서픽스를 합친 후, 상기 프리픽스를 대신하여 저장하고 상기 프리픽스 길이값에 1을 가산한 값으로 상기 프리픽스 길이값을 갱신하여 저장하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법.When the string matches an entry of the dictionary, after the prefix and the suffix are combined, storing the prefix instead of updating the prefix length value by adding 1 to the prefix length value and storing the prefix length value. Rempel jib Welch encoding method for data hiding comprising a. 제2항에 있어서, 상기 문자 스트림에서 상기 제1 문자의 다음 문자인 제2 문자를 읽어와 서픽스로 저장하고 상기 제1 문자와 제2 문자를 합한 문자열이 상기 딕셔너리의 엔트리에 매치되는지 여부를 판단하는 단계는,3. The method of claim 2, wherein a character string read from the character stream, the second character that is the next character of the first character, is stored as a suffix, and the first character and the second character sum to match an entry of the dictionary. The judging step is 상기 문자열이 상기 딕셔너리의 엔트리에 매치되지 않는 경우, If the string does not match an entry in the dictionary, 상기 은닉 메시지가 남아있는지 여부를 확인하는 단계;Checking whether the hidden message remains; 상기 프리픽스 길이값과 소정의 임계값을 비교하는 단계; Comparing the prefix length value with a predetermined threshold value; 상기 은닉 메시지가 남아있고, 상기 프리픽스 길이값이 상기 소정의 임계값보다 큰 경우, 상기 은닉 메시지에서 한 비트를 읽어오고 상기 은닉 메시지의 잔존 은닉 메시지 비트량을 갱신하고 상기 프리픽스 길이값의 패리티와 상기 은닉 메시지에서 읽어온 하나의 비트가 동일한지 여부를 판단하는 단계; 및If the hidden message remains and the prefix length value is greater than the predetermined threshold, one bit is read from the hidden message and the remaining hidden message bit amount of the hidden message is updated, and the parity of the prefix length value and the Determining whether one bit read from the hidden message is the same; And 상기 문자열을 상기 딕셔너리의 새로운 엔트리로 추가하여 업데이트하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법.Adding and updating the string as a new entry in the dictionary, and a Rempel Jib Welch encoding method for data hiding. 제4항에 있어서, 상기 은닉 메시지가 남아있는지 여부를 확인하는 단계 및 상기 프리픽스 길이값과 소정의 임계값을 비교하는 단계는,The method of claim 4, wherein checking whether the hidden message remains and comparing the prefix length value with a predetermined threshold value include: 상기 은닉 메시지가 남아있지 않은 경우 또는 상기 프리픽스 길이값이 상기 소정의 임계값보다 크지 않은 경우, 현재 저장된 프리픽스에 대응하는 코드를 상기 딕셔너리에서 찾아서 출력하는 것을 특징으로 하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법.Rempel Jib Welch encoding for data concealment, characterized in that if the hidden message remains or the prefix length value is not greater than the predetermined threshold, a code corresponding to the currently stored prefix is found and output from the dictionary. Way. 제4항에 있어서, 상기 은닉 메시지가 남아있고, 상기 프리픽스 길이값이 상기 소정의 임계값보다 큰 경우, 상기 은닉 메시지에서 한 비트를 읽어오고 상기 은닉 메시지의 잔존 은닉 메시지 비트량을 갱신하고 상기 프리픽스 길이값의 패리티와 상기 은닉 메시지에서 읽어온 하나의 비트가 동일한지 여부를 판단하는 단계는,5. The method of claim 4, wherein if the hidden message remains and the prefix length value is greater than the predetermined threshold, one bit is read from the hidden message and the remaining hidden message bit amount of the hidden message is updated and the prefix is set. Determining whether the parity of the length value and one bit read from the concealment message is the same, 상기 프리픽스 길이값의 패리티와 상기 은닉 메시지에서 읽어온 하나의 비트가 동일한 경우, 현재 저장된 프리픽스에 대응하는 코드를 상기 딕셔너리에서 찾아서 출력하는 단계;If the parity of the prefix length value and one bit read from the concealment message are the same, finding and outputting a code corresponding to the currently stored prefix from the dictionary; 상기 프리픽스 길이값의 패리티와 상기 은닉 메시지에서 읽어온 하나의 비트가 동일하지 않은 경우, 상기 저장된 프리픽스 길이값을 1만큼 공제한 후 상기 프리픽스 길이값 저장영역에 갱신하여 저장하는 단계;If the parity of the prefix length value and one bit read from the hidden message are not the same, subtracting the stored prefix length value by 1 and updating and storing the prefix length value in the prefix length value storage area; 상기 저장된 프리픽스를 읽어와 상기 프리픽스의 마지막 문자를 제거하고 상기 마지막 문자가 제거된 프리픽스를 새로운 프리픽스로 갱신 저장하는 단계; 및Reading the stored prefix to remove the last character of the prefix and updating and storing the prefix from which the last character has been removed as a new prefix; And 상기 마지막 문자를 새로운 서픽스로 갱신 저장하고 현재 저장된 프리픽스에 대응하는 코드를 상기 딕셔너리에서 찾아서 출력하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 방법.And storing the last character as a new suffix and finding and outputting a code corresponding to the currently stored prefix in the dictionary. 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법에 있어서,In the Rempel Jib Welch decoding method for data concealment, 데이터 은닉을 위한 렘펠 지브 웰치 복호화를 수행하기 위한 입력신호 스트림을 입력받는 단계; 및Receiving an input signal stream for performing Rempel Jib Welch decoding for data concealment; And 상기 입력신호 스트림에 대해 상기 램펠 지브 웰치 복호화를 수행하고 상기 램펠 지브 웰치 복호화 과정에서 소정의 조건을 만족할 경우 출력되는 패리티 값을 통해 은닉된 메시지를 출력하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법.Rempel Jib Welch for performing the Rampel Jib Welch decoding on the input signal stream and outputting a hidden message through a parity value output when a predetermined condition is satisfied in the Rampel Jib Welch decoding process. Decryption method. 제7항에 있어서, 상기 입력신호 스트림에 대해 상기 램펠 지브 웰치 복호화를 수행하고 상기 램펠 지브 웰치 복호화 과정에서 소정의 조건을 만족할 경우 출력되는 패리티 값을 통해 은닉된 메시지를 출력하는 단계는,8. The method of claim 7, wherein the performing of the Rampel Jib Welch decoding on the input signal stream and outputting a hidden message through a parity value output when a predetermined condition is satisfied in the Rampel Jib Welch decoding process, 플래그 설정 레지스터의 플래그를 0으로 설정하고 상기 입력신호 스트림에서 복호화할 코드 중 첫 번째에 위치한 제1 코드를 읽어와 저장하고 상기 저장된 제1 코드에 해당하는 문자열을 딕셔너리에서 찾아 출력하는 단계;Setting a flag of a flag setting register to 0, reading and storing a first code located in a first one of codes to be decoded from the input signal stream, and finding and outputting a string corresponding to the stored first code in a dictionary; 상기 입력신호 스트림에서 상기 제1 코드의 다음 코드인 제2 코드를 읽어와 저장하고 상기 저장된 제2 코드가 상기 딕셔너리에 존재하는지 여부를 판단하는 단계; Reading and storing a second code, which is a next code of the first code, from the input signal stream and determining whether the stored second code exists in the dictionary; 스트링 저장 영역에 저장된 스트링을 출력하고 상기 출력된 스트링의 첫문자를 서픽스로 저장하고 상기 저장된 제1 코드와 상기 서픽스를 합친 문자열을 상기 딕셔너리에 추가하여 상기 딕셔너리를 업데이트하는 단계; 및Outputting a string stored in a string storage area, storing the first character of the output string as a suffix, and updating the dictionary by adding the stored first code and the suffix string to the dictionary; And 은닉 복호화 과정을 수행하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법.A Rempel Jib Welch decoding method for concealing data comprising performing a concealment decoding process. 제8항에 있어서, 상기 입력신호 스트림에서 상기 제1 코드의 다음 코드인 제2 코드를 읽어와 저장하고 상기 저장된 제2 코드가 상기 딕셔너리에 존재하는지 여부를 판단하는 단계는,The method of claim 8, wherein reading and storing a second code, which is a next code of the first code, from the input signal stream and determining whether the stored second code exists in the dictionary, 상기 저장된 제2 코드가 상기 딕셔너리에 존재하는 경우, 상기 딕셔너리에서 상기 저장된 제2 코드의 문자열을 읽어 상기 스트링 저장 영역에 저장하고 상기 스트링 저장영역에 저장된 문자열의 길이값을 저장하는 것을 특징으로 하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법.If the stored second code exists in the dictionary, the dictionary reads the string of the stored second code and stores the string in the string storage area and stores the length value of the string stored in the string storage area. Rempel Jib Welch decoding method for concealment. 제8항에 있어서, 상기 입력신호 스트림에서 상기 제1 코드의 다음 코드인 제2 코드를 읽어와 저장하고 상기 저장된 제2 코드가 상기 딕셔너리에 존재하는지 여부를 판단하는 단계는,The method of claim 8, wherein reading and storing a second code, which is a next code of the first code, from the input signal stream and determining whether the stored second code exists in the dictionary, 상기 저장된 제2 코드가 상기 딕셔너리에 존재하지 않는 경우, 상기 저장된 제1 코드의 문자열을 읽어 상기 스트링 저장 영역에 저장하고 상기 스트링 저장영역에 저장된 문자열의 길이값을 저장하는 것을 특징으로 하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법.If the stored second code does not exist in the dictionary, the data concealment may be read and stored in the string storage area and the length value of the string stored in the string storage area. Rempel Jib Welch decryption method. 제8항에 있어서, 상기 은닉 복호화 과정을 수행하는 단계는,The method of claim 8, wherein performing the hidden decoding process comprises: 상기 플래그 값을 확인하는 단계; 및Checking the flag value; And 상기 플래그 값이 1인 경우, 상기 딕셔너리에 업데이트한 상기 문자열과 동일한 문자열이 상기 딕셔너리에 적어도 하나 존재하는지를 확인하고 상기 딕셔너리에 업데이트한 상기 문자열과 동일한 문자열이 존재하지 않는 경우, 상기 플래그 값을 0으로 설정하고, 상기 딕셔너리에 업데이트한 상기 문자열과 동일한 문자열이 존재하는 경우, 임계값 패리티를 은닉 메시지로 출력한 후 상기 플래그 값을 0으로 설정하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법.If the flag value is 1, it is checked whether at least one string identical to the string updated in the dictionary exists in the dictionary, and if the same string as the string updated in the dictionary does not exist, the flag value is zero. And setting the flag value to 0 after outputting a threshold parity as a hidden message when the same string as the updated string exists in the dictionary. 제8항에 있어서, 상기 은닉 복호화 과정을 수행하는 단계는,The method of claim 8, wherein performing the hidden decoding process comprises: 상기 플래그 값이 0이고 상기 스트링의 길이값이 소정의 임계값보다 큰 경우, 상기 스트링의 길이값 패리티를 추출하고 상기 스트링의 길이값 패리티를 은닉 메시지로서 출력한 후 상기 저장된 제1 코드를 갱신 저장하는 단계; 및If the flag value is 0 and the length value of the string is larger than a predetermined threshold value, the length value parity of the string is extracted, the length value parity of the string is output as a hidden message, and the stored first code is updated and stored. Making; And 상기 스트링 길이값이 소정의 임계값과 같은 경우, 상기 플래그 값을 1로 설정하고 상기 저장된 제1 코드를 갱신 저장하는 단계를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 방법. And setting the flag value to 1 and updating and storing the stored first code if the string length value is equal to a predetermined threshold value. 데이터 은닉을 위한 렘펠 지브 웰치 부호화 장치에 있어서, In the Rempel Jib Welch encoder for data concealment, 렘펠 지브 웰치 부호화를 수행하기 위한 문자 스트림을 저장하는 제1 입력버퍼;A first input buffer for storing a character stream for performing Rempel jib Welch encoding; 데이터 은닉을 위한 은닉 메시지를 저장하는 제2 입력버퍼;A second input buffer for storing a concealment message for data concealment; 상기 제1 입력버퍼 및 상기 제2 입력버퍼에 각각 저장된 상기 문자 스트림 및 상기 은닉 메시지를 읽어와 저장하는 저장부;A storage unit for reading and storing the text stream and the hidden message stored in the first input buffer and the second input buffer, respectively; 상기 제1 입력버퍼로부터 상기 문자 스트림을 제공받아 렘펠 지브 웰치 부호화를 수행하고 상기 제2 입력버퍼로부터 상기 은닉 메시지를 제공받아 데이터 은닉을 수행하기 위한 판단을 수행하는 제어부;A controller configured to receive the text stream from the first input buffer to perform a Lempel Jib Welch encoding and to receive the hidden message from the second input buffer to perform data concealment; 상기 제2 입력버퍼로부터 제공받은 상기 은닉 메시지의 데이터 은닉을 수행하는 메시지 은닉부;A message concealment unit which performs data concealment of the concealment message received from the second input buffer; 상기 저장부에 저장된 문자 스트림 및 은닉 메시지의 문자열과 매칭되는 코드를 포함하는 코드 테이블이 저장되어 있는 딕셔너리; 및A dictionary storing a code table including codes matched with character strings stored in the storage unit and strings of hidden messages; And 상기 제어부에 의해 렘펠 지브 웰치 부호화가 수행된 문자 스트림과 데이터 은닉된 은닉 메시지가 출력되는 출력버퍼를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 장치.The Rempel Jib Welch encoding apparatus for data concealment includes a character stream in which Rempel Jib Welch encoding is performed by the control unit and an output buffer for outputting a data hidden secret message. 제13항에 있어서, 상기 저장부는,The method of claim 13, wherein the storage unit, 상기 제1 입력버퍼에서 읽어온 문자 스트림의 첫 번째 문자인 제1 문자를 저장하는 프리픽스 저장영역;A prefix storage area for storing a first character which is the first character of the character stream read from the first input buffer; 상기 제1 입력버퍼에서 읽어온 문자 스트림의 상기 제1 문자의 다음 문자인 제2 문자를 저장하는 서픽스 저장영역;A suffix storage area for storing a second character that is a next character of the first character of the character stream read from the first input buffer; 상기 프리픽스 저장영역에 저장된 프리픽스의 길이값을 저장하는 프리픽스 길이값 저장영역;A prefix length value storage area for storing a length value of a prefix stored in the prefix storage area; 은닉 처리되지 않은 잔존하는 은닉 메시지의 비트량을 저장하기 위한 잔존 은닉 메시지 비트량 저장영역을 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 장치.A Rempel Jib Welch encoding apparatus for concealing data comprising a remaining hidden message bit amount storage area for storing bit amounts of remaining hidden hidden messages. 제13항에 있어서, 상기 제어부는,The method of claim 13, wherein the control unit, 프리픽스와 서픽스를 합한 문자열이 상기 딕셔너리에 매칭되는지 여부를 판단하고, 상기 문자열이 상기 딕셔너리에 매칭되지 않는 경우, 상기 저장부에 저장된 프리픽스 길이값과 소정의 임계값의 크기를 비교하여 상기 프리픽스 길이값이 상기 소정의 임계값보다 큰 경우 상기 은닉 메시지의 데이터 은닉을 수행하도록 제어하는 것을 특징으로 하는 데이터 은닉을 위한 렘펠 지브 웰치 부호화 장치.It is determined whether a string including a prefix and a suffix matches the dictionary, and when the string does not match the dictionary, the prefix length stored in the storage unit is compared with a size of a predetermined threshold value to determine the prefix length. The Rempel Jib Welch encoding apparatus for data concealment characterized in that if the value is larger than the predetermined threshold, control to perform data concealment of the concealment message. 데이터 은닉을 위한 렘펠 지브 웰치 복호화 장치에 있어서,In the Rempel Jib Welch decoding apparatus for data concealment, 램펠 지브 웰치 복호화를 수행하고 은닉 메시지을 제공받기 위해 입력신호 스트림을 제공받는 입력버퍼;An input buffer provided with an input signal stream to perform a Rampel Jib Welch decoding and receive a hidden message; 상기 입력버퍼로부터 상기 입력신호 스트림을 읽어와 저장하는 저장부;A storage unit for reading and storing the input signal stream from the input buffer; 상기 저장부에 저장된 상기 입력신호 스트림과 매칭되는 코드를 포함하는 코드 테이블이 저장되어 있는 딕셔너리;A dictionary storing a code table including codes matching the input signal stream stored in the storage unit; 상기 입력신호 스트림을 기초로 은닉 메시지를 복호화하는 은닉 메시지 복호부; A hidden message decoder for decoding a hidden message based on the input signal stream; 상기 저장부에 저장된 입력신호 스트림을 기초로 은닉 메시지를 추출하기 위한 판단을 수행하는 제어부;A control unit which performs a determination to extract a hidden message based on the input signal stream stored in the storage unit; 상기 은닉 메시지 복호부에서 복호화된 은닉 메시지가 출력되는 제1 출력버퍼; 및A first output buffer for outputting the hidden message decoded by the hidden message decoder; And 상기 저장부에서 읽어온 문자열을 저장하는 스트링 저장영역을 포함하고 상기 스트링 저장영역에 저장된 값을 출력하는 제2 출력버퍼를 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 장치.And a second output buffer for outputting a value stored in the string storage region, the string storage region storing a string read from the storage unit. 제16항에 있어서, 상기 저장부는,The method of claim 16, wherein the storage unit, 상기 입력버퍼에서 입력된 입력신호 스트림을 저장하는 이전 코드 저장영역 및 신규 코드 저장영역;An old code storage area and a new code storage area for storing an input signal stream input from the input buffer; 상기 스트링 저장영역에 저장된 스트링의 길이값을 저장하는 스트링 길이값 저장영역; 및A string length value storage area for storing a length value of a string stored in the string storage area; And 상기 스트링 저장영역에 저장된 스트링의 첫문자를 서픽스로 저장하는 서픽스 저장영역을 포함하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 장치.And a suffix storage area for storing the first character of the string stored in the string storage area as a suffix. 제16항에 있어서, 상기 제어부는,The method of claim 16, wherein the control unit, 내부 플래그 설정 레지스터에서 플래그 정보를 확인하고, 플래그 값이 0이고 상기 저장부에 저장된 스트링 길이값이 소정의 임계값보다 큰 경우, 상기 스트링 길이값의 패리티 값을 추출하여 상기 패리티 값을 은닉 메시지 비트로서 제1 출력버퍼를 통해 출력하는 것을 특징으로 하는 데이터 은닉을 위한 렘펠 지브 웰치 복호화 장치.If the flag information is checked in an internal flag setting register, and the flag value is 0 and the string length value stored in the storage unit is larger than a predetermined threshold value, the parity value of the string length value is extracted to conceal the parity value. And a Rempel Jib Welch decoding apparatus for data concealment, characterized in that it is output through a first output buffer.
KR1020040085219A 2004-10-25 2004-10-25 Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method Expired - Fee Related KR101141897B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040085219A KR101141897B1 (en) 2004-10-25 2004-10-25 Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040085219A KR101141897B1 (en) 2004-10-25 2004-10-25 Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method

Publications (2)

Publication Number Publication Date
KR20060036179A KR20060036179A (en) 2006-04-28
KR101141897B1 true KR101141897B1 (en) 2012-05-03

Family

ID=37144445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040085219A Expired - Fee Related KR101141897B1 (en) 2004-10-25 2004-10-25 Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method

Country Status (1)

Country Link
KR (1) KR101141897B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100965603B1 (en) * 2008-03-17 2010-06-23 경기대학교 산학협력단 Method for receiving message using device and device
KR101006864B1 (en) * 2008-10-15 2011-01-12 고려대학교 산학협력단 Data Lossless Compression Using Data Concealment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998017061A1 (en) 1996-10-15 1998-04-23 Ibm Japan Ltd. Data hiding method and data extracting method
KR20010092899A (en) * 2000-03-27 2001-10-27 노용만 Method of mpeg-7 meta data hiding and detection to retrieve multimedia for multimedia indexing retrieval system
KR20020064942A (en) * 2000-10-19 2002-08-10 소니 가부시끼 가이샤 Data processing device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998017061A1 (en) 1996-10-15 1998-04-23 Ibm Japan Ltd. Data hiding method and data extracting method
KR20010092899A (en) * 2000-03-27 2001-10-27 노용만 Method of mpeg-7 meta data hiding and detection to retrieve multimedia for multimedia indexing retrieval system
KR20020064942A (en) * 2000-10-19 2002-08-10 소니 가부시끼 가이샤 Data processing device

Also Published As

Publication number Publication date
KR20060036179A (en) 2006-04-28

Similar Documents

Publication Publication Date Title
US7365658B2 (en) Method and apparatus for lossless run-length data encoding
JP3459030B2 (en) Coding system
US6529553B2 (en) HVQ compression for image boundaries
US7254250B2 (en) Watermark embedding and extraction method and apparatus in compressed streams
US7570782B2 (en) Method and system for watermarking
US8107743B2 (en) Image processing device, image processing method, and storage medium
KR101141897B1 (en) Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method
US6078696A (en) HVQ compression of data and printing hints
EP0973339A2 (en) Compression by splitting each word and applying lossy compression to least significant bits
CN112907429B (en) Digital signature setting and extracting method and device, storage medium and electronic equipment
Shim et al. DH-LZW: lossless data hiding in LZW compression
KR100597004B1 (en) Binary Image Processing Apparatus and Method Using Symbol Pre-Relocation Method
KR100636370B1 (en) Encoding device and method thereof using decision bit, and decoding device and method thereof
CN112449186A (en) Encoding method, decoding method, corresponding devices, electronic equipment and storage medium
JP2891818B2 (en) Encoding device
JPH11317673A (en) Run length encoding and decoding method therefor
CN115514967B (en) Image compression method and image decompression method based on binary block bidirectional coding
JP4743884B2 (en) Image coding apparatus and control method thereof
JP3119027B2 (en) Coding method and decoding method and coding / decoding method
JP3320281B2 (en) Multi-value image processing device
US20050169365A1 (en) Data encoding using multi-dimensional redundancies
Shim et al. DH-LZW: Lossless data hiding method in LZW compression
US20180054626A1 (en) Decoding method and decoding apparatus for avs system
EP0973340A2 (en) HVQ compression with an error term
JPH11205613A (en) Image processor

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

N231 Notification of change of applicant
PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R11-asn-PN2301

St.27 status event code: A-3-3-R10-R13-asn-PN2301

A201 Request for examination
PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

Fee payment year number: 1

St.27 status event code: A-2-2-U10-U11-oth-PR1002

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

St.27 status event code: A-5-5-R10-R13-asn-PN2301

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

St.27 status event code: A-5-5-R10-R13-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

Fee payment year number: 4

St.27 status event code: A-4-4-U10-U11-oth-PR1001

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

FPAY Annual fee payment

Payment date: 20160328

Year of fee payment: 5

PR1001 Payment of annual fee

Fee payment year number: 5

St.27 status event code: A-4-4-U10-U11-oth-PR1001

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Not in force date: 20170425

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

St.27 status event code: A-4-4-U10-U13-oth-PC1903

PC1903 Unpaid annual fee

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20170425

St.27 status event code: N-4-6-H10-H13-oth-PC1903

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

St.27 status event code: A-5-5-R10-R13-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000