[UU Encoding]
인코딩된 데이터는 항상 begin으로 시작하여 end로 끝난다.
인코딩 값들은 begin 다음 줄에서 시작되고, end 라인 바로 앞에는 empty line이 한 줄 있다.
<UU encoding 구성>
begin mode filename
....encoded data...
"empty" line
end
1. Begin line
시작 줄은 begin이라는 단어로 시작하고, 같은 줄에 mode와 filename이 있다.
mode는 대상 파일의 액세스 권한을 설명하는 3자리 또는 4자리 8진수로 Unix chmod 명령 및 개방형 시스템 호출에서 사용하는 것과 같다.
세 자리 숫자는 각각 4(읽기 권한), 2(쓰기 권한), 1(실행 권한) 값으로 나뉜다.
첫 번째 숫자는 사용자, 두 번째 숫자는 사용자가 속한 그룹, 세 번째 숫자는 다른 모든 사용자의 권한을 설명한다.
제한된 파일 권한만 있는 DOS 또는 기타 시스템에서는 사용자 권한만 평가한다.
일반적으로 mode값은 644(4+2/4/4) 또는 755(4+2+1/4+1/4+1)이다.
filename에는 디렉토리 정보가 없어야 한다.
2. Encoded Data
UU encoding의 기본은 64개의 값을 인코딩하기 위해 ASCII 문자 32 – 95를 사용한다.
예외적으로 12는 값 0으로 공백 문자로 매핑된다.(ASCII 32) 행의 처음이나 끝에 공백 무자를 제거하는 메일러 문제를 방지하기 위해 문자 96” ’ ”이 대신 사용된다.
[표1 - UU encoding의 인코딩 테이블]
UU encoded 데이터의 각 행은 첫 번째 column에서 이 줄에 인코딩된 옥텟(바이트)의 수를 접두사로 붙인다.
가장 보편적인 접두사는 ‘M’로 표에서 ‘M’을 찾아 봄으로써 숫자 45를 나타내고, 따라서 이 접두어는 줄에 45 옥텟(60(45 / 3 * 4) 일반 텍스트로 인코딩 됨)이 있음을 알 수 있다.
UU encoding에서 각 행은 동일한 길이를 가지며, 일반적으로 길이(줄 끝 문자 제외)는 61이다. 인코딩된 데이터의 마지막 행만 짧을 수 있다.
입력 데이터가 3 옥텟의 배수가 아닌 경우, 마지막 트리플은 (1 또는 2) NULL로 채워진다. 디코더는 접두어에서 추력 파일로 들어갈 옥텟 수를 결정할 수 있다.
3. Empty line
인코딩된 데이터의 줄이 끝나고 빈 줄 하나가 있어야 하고, 빈 줄은 데이터의 인코딩 값이 아닌 인코딩된 행이어야 한다.
이것은 단일 문자 “’”(0 옥텟의 값을 인코딩하는 접두어)이 있는 행을 사용하면 된다.
4. End line
인코딩된 파일은 end라는 단어로 구성된 라인으로 끝난다.
5. Splitting Files
UU encoding은 별도의 메일링 또는 게시를 위해 파일을 두 개 이상의 메시지로 분할하는 메커니즘(체제)을 설명하지 않는다.
일반적으로 인코딩된 파일은 같거나 적은 수의 부분으로 나누어진다.
스마트 디코더가 출시되기 전에 수령인은 수동으로 부품을 연결하고 그 사이의 헤더를 제거했다. 그러나 메일 메시지의 헤더가 UU encoded 데이터 라인 일 수 있기 때문에 잠재적으로 데이터가 손상 될 가능성이 있다.
6. Variants of UU encoding
위의 규칙에는 디코더 프로그램에서 고려해야할 많은 변형이 있다.
<가장 자주 사용되는 항목>
오래된 인코더는 0값을 인코딩하는 규칙을 지키지 않고 "'"문자 대신 공백 문자로 인코딩한다.
-> 이것은 "오류"가 아니라 파일을 우편으로 보내거나 게시할 때 잠재적인 문제이다.
일부 인코더는 각 인코딩 된 줄에 62번째 문자를 추가한다. "a"에서 "z"까지 반복되는 문자가 있다.
-> 이 기술은 누락된 라인을 탐지하는데 사용될 수 있지만 일부 디코더는 혼란스러워한다.
입력 파일의 길이가 3의 배수가 아닌 경우, 일부 인코더는 마지막 데이터 줄 끝에 "불필요한" 문자를 생략한다.
때때로, 끝에 있는 "빈" 데이터 라인이 생략되고, 다른 라인에서는 라인이 완전히 비어있다.("'"제외)
또한, 라인을 올바르게 종료하는 방법에 약간의 혼동이 있다.
대부분의 인코더는 단순히 로컬 시스템 (CRLF - DOS 인코더, LF – Unix 인코더, CR - Mac인코더)을 사용하지만 MIME 표준과 관련하여 모든 시스템이서 CRLF를 사용한다.
이것은 일부 유닉스 디코더에서 약간의 문제를 일으키는데 “end”와 LF(4문자로 표시)를 작접 찾는다.
이러한 프로그램을 “end of found”라고 보고하지만 파일은 올바르게 디코딩한다.
7. Example
[그림 1]
위 예시에서 mode는 600으로 (4 + 2, 0, 0), filename은 test.txt이다.
'Crypt' 카테고리의 다른 글
SHA-2_(2) (0) | 2017.11.03 |
---|---|
SHA-2_(1) (0) | 2017.11.03 |
MD5 (0) | 2017.09.26 |
Hash Function (0) | 2017.09.26 |
Caesar cipher (0) | 2017.09.13 |