Hey --
I was getting cvs server set up with custom password (i.e. using
CVSROOT/passwd) and wanted to make CVS passwords different from regular
login password. The docs said the only way to specify passwords was to
copy and paste them from /etc/passwd -- but this is exactly what i was
trying to avoid.
So I wrote this tiny little program that crypts a password, which then
can be read into CVSROOT/passwd (say, "r !crypt mypass" in vi).... I am
running Red Hat 6.1, and the code makes use of new md5 password
crypting.
Hope this is useful.
-- Kostya
/*
Crypts a password given on the command line.
Compile: gcc -o cryptpw cryptpw.c -lcrypt
Use: cryptpw mypassword
[EMAIL PROTECTED]
*/
#include <crypt.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>
char get_salt ()
{
long r;
int c;
while (1)
{
r = random () / (RAND_MAX / 127);
c = (int) r;
if (isalnum (c))
return c;
}
}
int main(int argc, char **argv)
{
char *password;
char *encrypted;
char salt[12]; /* "$1$y1234567\0" */
int i;
if (argc != 2)
{
printf ("Usage: cryptpw password\n");
return 1;
}
salt[0] = '$';
salt[1] = '1';
salt[2] = '$';
srandom (time (NULL));
for (i = 3; i < 11; ++ i)
salt[i] = get_salt ();
salt[11] = '\0';
password = argv[1];
encrypted = crypt(password, salt);
printf (
"Password: %s\n"
"Salt: %s\n"
"Encrypted: %s\n",
password, salt, encrypted);
return 0;
}