// program encrypt.cc #include #include #include #include #include char* makesalt( void ) { static char salt[10]; static char saltchar[] = { "./0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" }; srand(time(NULL)); for( int i=0; i<8; i++ ){ salt[i] = saltchar[ (rand()>>6) & 0x3f ]; } return salt; } int main( void ) { char handle[16]; fputs("Handle name :", stderr ); fgets( handle, sizeof(handle), stdin ); if( 1 != sscanf( handle, "%s", handle ) ){ fputs("Wrong format.\n", stderr ); exit(1); } char* passwd = strdup( getpass("New password:") ); if( strcmp( passwd, getpass("Again please:") ) ){ fputs("Miss type! Confirm the password.\n", stderr ); exit(1); } printf("%s:%s\n", handle, crypt( passwd, makesalt() ) ); free(passwd); fputs("Succeed.\n", stderr ); return 0; }