CIPHER(3)

명칭
setkey, encrypt, des_setkey, des_cipher - DES 암호화

프로그램 라이브러리
libcipher

서식
<unistd.h> int setkey(const char *key) int encrypt(char *block, int flag) int des_setkey(const char *key) int des_cipher(const char *in, char *out, long salt, int count)

해설
encrypt(), setkey(), des_setkey(), des_cipher() 함수는, DES 알고리즘에의 액세스 수단을 제공합니다. setkey() 에는, 바이너리치 (수치 0 또는 1)를 가지는 64바이트의 배열을 건네줍니다. 이 배열로부터 56 비트의 열쇠가 꺼내집니다. 이것은, 배열을 8 바이트의 그룹에 분할해, 각 그룹의 마지막 비트를 무시하는 것으로 행합니다. 이 비트는 DES 에 의해 바이트 패리티 검사를 위해서(때문에) 예약되고 있습니다만, 이러한 함수는 이 비트를 무시합니다.

encrypt() 의 인수 block 도 또한, 바이너리치를 가지는 64 바이트의 배열입니다. flag 의 값이 0 의 경우, block (은)는 암호화됩니다. 그 이외의 경우는 복호화(decode) 됩니다. setkey() 에 의해 지정한 열쇠를 사용해, 배열의 값을 처리한 다음에, 처리 결과는 원래의 배열 block 에 돌려주어집니다.

des_setkey() 의 인수는 길이 8 의 캐릭터의 배열입니다. 각 캐릭터의 최하정도 비트 (패리티 비트)는 무시되어 나머지의 비트를 붙여 56 비트의 열쇠를 형성합니다. des_cipher() 함수는 count 의 abs(3) 회 DES (을)를 반복해, in 에 있는 8 캐릭터에 격납된 64 비트의 값을 암호화 ( count 하지만 부의 경우는 복호화(decode)) 해, 결과의 64 비트를 8 캐릭터로 해 out (이것은, in (와)과 같은 장소에서도 상관하지 않습니다) 에 격납합니다. salt 하 DES 알고리즘에 대해, 16777216 방법 또는 4096 방법 (즉, 24 비트 또는 12 비트) 중에서 1 방법이라고 하는 불규칙성을 도입합니다 ( salt 의 비트 i 하지만 설정되어 있는 경우, DES E-box 출력중의 비트 i (와)과 비트 i+24 (이)가 교환됩니다).

setkey(), encrypt(), des_setkey(), des_cipher() 함수는 처리에 성공했을 경우 0 을 돌려주어, 실패했을 경우 1 을 돌려줍니다.

setkey() (와)과 des_setkey() 함수는 같은 열쇠 공간을 조작합니다.

관련 항목
login(1), passwd(1), crypt(3), getpass(3), passwd(5)

역사
이 프로그램 라이브러리 (FreeSec 1.0)는, 아메리카 합중국만으로 사용할 수 있다 NetBSD libcrypt 암호화 프로그램 라이브러리에 대해서, 그러한 장해가 없는 치환으로서 아메리카 합중국의 밖에서 개발되었습니다. 유저는, 이 코드 (곳의 프로그램 라이브러리를 정적 링크 한 프로그램)는 합중국의 밖에 수출할 수 없는 것을 이해해 두지 않으면 되지 않습니다. 무엇보다, 수입할 수 있는 것은 분명합니다만.

저자
David Burren <davidb@werj.com.au>