Submitted by yejr on 周五, 2007/08/17 - 16:57
/* Trivial password generator for cvs. Compile with 'cc -o cvspasswd cvspasswd.c -lcrypt' */
#include
#include
#include
/* Generate a single character of salt given a random integer. See 'man crypt'. */
int base64(int x)
{
const char b64[64] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./";
return b64[x % 64];
}
int main(int argc, char **argv)
{
char ibuf[256];
char passwd[256];
char saltstr[3];
struct tms t;
if (argc != 2) {
fprintf(stderr, "Usage: cvspasswd username\n");
exit(1);
}
fprintf(stderr, "Password for %s: ", argv[1]);
ibuf[0] = 0;
fgets(ibuf, sizeof(ibuf), stdin);
sscanf(ibuf, "%s", passwd);
saltstr[0] = base64(times(&t));
saltstr[1] = base64(time(0));
saltstr[2] = 0;
printf("%s:%s:cvsuser\n", argv[1], crypt(passwd, saltstr));
exit(0);
}
最近评论