Revision: 37881
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 19, 2010 00:57 by Affix
Initial Code
//
// Author : Keiran "Affix" Smith <Affix_at_Affix_dot_me>
// Website: http://keiran-smith.net
// Description :
// Generate a Simple Random Password
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
#include <stdio.h>
#include <stdlib.h>
#ifdef DEVRANDOM
#include <fcntl.h>
#endif
int max;
char *charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
void seed()
{
int i, j;
#ifdef DEVRANDOM
int fd;
#endif
i = getpid();
j = time(NULL) ^ (i + (i << 15)); /* Thank you the Camel Book */
#ifdef DEVRANDOM
fd = open(DEVRANDOM, O_RDONLY, 0);
if (fd == -1) {
perror(DEVRANDOM);
exit(1);
}
read(fd, &i, sizeof(charset));
j = j ^ i;
close(fd);
#endif
srand(j);
}
char *shuffle(char *v, size_t n)
{
int i, j;
char *s;
for (i=0; i < n; i++) {
do
j = rand() % n;
while (j < i);
s = v;
v = v;
v = s;
}
return v;
}
int main(int argc, char *argv[])
{
if(argv[1])
max = atoi(argv[1]);
else
max = 8;
printf("Maximum Password Length is : %d\n\n", max);
seed();
int i = 0;
while(i < max)
{
charset = shuffle(charset, sizeof(charset));
int rnd_num = rand() % sizeof(charset);
char pchar = charset[rnd_num];
printf("%c", pchar);
i++;
}
printf("\n\n");
return 0;
}
Initial URL
Initial Description
Initial Title
Simple Random Password Generator
Initial Tags
Initial Language
C