>> Edit article
이름
제목
패스워드
다음은 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("