다음은 crypt()를 이용한 간단한 프로그램임다.
-- sample.c --
#define _XOPEN_SOURCE // man crypt에서 이렇게 하라고 하더군요
#include <unistd.h>
#include <string.h>
#include <stdio.h>
int main()
{
char salt[2] = "ab";
char passwd[8] = "pa$$word";
char encrypted_password[13+1];
strcpy(encrypted_password, crypt(passwd, salt));
printf("encrypted_password = %s", encrypted_password);
}
-- sample.c --
$gcc -o sample -lcrypt sample.c <- crypt 라이브러리를 지정해야..
salt<>는 a-z, A-Z, 0-9, '.', '/' 의 64(=2^6)개 문자중 아무거나 2개를
취해서 만든 길이가 2인 문자열임다.
passwd<>는 사용자가 입력한 패스워드. 길이가 8이고, 하위 7비트를 떼서
모두 56비트만 사용합니다.
이 두 가지를 입력으로 crypt를 돌리면
길이가 13인 encrypted_password 스트링이 나옵니다.
이 스트링도 salt를 구성하는 문자들로 구성되어 있고, 따라서 각
문자는 6비트씩의 정보를 가집니다.
처음 2바이트는 salt와 같고, 나머지 11바이트(=66비트) 중에서
64비트만이 진짜 암호화된 패스워드에 대한 정보를 담고 있습니다.
즉, key(passwd<>)가 64비트, cipher text(encrypted_password<>)가
64비트, plain text("