NO

Author Topic: Question on my Random Password Generator  (Read 3694 times)

tbohon

  • Guest
Question on my Random Password Generator
« on: April 13, 2010, 10:32:38 PM »
I find myself in need of a simple, easy-to-implement generator for passwords and came up with the following routine.  It seems adequate for my needs but I'm wondering what others think.  In particular, I'm wondering if re-randomizing the array between password (not character) generation loops would add any increased randomness.

Thoughts, comments, criticisms and good vibes always welcome ...  ;)

Code: [Select]
/****************************************************************************
 *                                                                          *
 * File    : rndgen.c                                                       *
 *                                                                          *
 * Purpose : Implement a random number generator                            *
 *           and print out the results of multiple runs.                    *
 *                                                                          *
 * Method  : Using current clock (number of seconds since 1/1/1900) as seed *
 *           randomize the initial array and print out the result of the    *
 *           'sort'.  Next, generate 10 groups of 15 random strings each    *
 *           and print them out.  By examination the groups appear to be    *
 *           reasonably random although further testing would confirm or    *
 *           negate that finding.
 *                                                                          *
 * History : Date        Who  Reason                                        *
 *           2010.04.12  tgb  Created original program                      *
 *                                                                          *
 ****************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char carray[] = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int main(int argc, char *argv[])
{
int i, j, k, n;
time_t seed;
char tmp;

    // First seed the random number generator

seed = time( NULL );

srand(seed);

// Now sort the carray[] to randomize it as much as possible

for (i=0; i<62; i++)
{
n = rand() % 62;
tmp = carray[n];
carray[n] = carray[i];
carray[i] = tmp;
}

for (i=0; i<62; i++)
{
printf("%c", carray[i]);
}

printf("\n\n");

for (k=0; k<10; k++)
{

for (j=0; j<15; j++)
{
for (i=0; i<10; i++)
{
printf("%c", carray[rand() % 62]);
}

printf("\n");
}

printf("\n==========\n\n");
}

    return 0;
}

And the output from a single run:

Code: [Select]
/*  Sample run output follows:

7ZCJPtca9BsqEFhzWp2o8yKjA1XObYk5LnDS06Ili4mT3gUGVfQvMNwrRexuHd

6VFl58xE2L
inP1SkLnKG
aQwXIUPraa
oootHo8qT8
EDD7V69OPN
G8qN6b2Zdd
2zYRTJQ42W
Xbrcy1qPeU
eZxWbcmVl8
42FluUKxm8
74nqUytZYk
lAexygBo4q
UawyCVj1K0
5067OBNa2r
OZJclTSjEb

==========

P5MpQIHzko
t7AiTC2Umt
XULkMH3V4K
dNNYhmIqpg
OsXpY1BI5l
33jCol3un7
1sQs4l1SYW
mtX4UzojUV
6uY0wMB3jH
AVNOPodRws
56ds8l8JFw
8PpKBImr6f
F9wQ2HSK3r
ogfCUU2wAS
VzHrsL6ddZ

==========

aTnI8QMWe1
tigGB04cpR
3AHbL193Nn
glcWr0gZLa
mmrt3LHfDP
hP2ZGqpb4Z
rm8pEpaPUk
Gj2wYf1qgH
M44NvBGRhs
Sp4e7T5bSx
nc5hVRJAbD
Oc3Ujc8cmf
8J1SOQ7nqI
bOHbS5E0Ii
uByvNvvyjP

==========

xwKUHHeiSG
3BOQuXOKfr
TZ4g5twsW4
5YXcwcScxE
pWwn9E9FFs
PwzDYVVAxm
b5DiyGT4jI
FAXJQlAOme
qV9GMl82Pq
gbq9MaSr81
wK6YW2r5fD
xY9kohiGP3
SqqZSviDgA
ohuzTMKQOu
eOOIaw3BJJ

==========

1x8OGHvBtA
6YAIGfXIcW
poZuG8cIsx
5cO7XTVMIk
SzpcVeUCxV
cnfXCqJdp6
49Op1Mx81r
feUAxk9SSn
RtppXkpkGg
inW5Ws7PJy
w3egU5Pzlh
9RsUE1dRDm
j8fr5Zt9ax
96ZDuczqTi
QbhdTmOTXA

==========

8TBQ9deXqO
HEvDTr32i9
hVV1lXPhsa
q345l9svak
wE8G5GjCKN
lAPsab6kyh
qjfaIKAWvN
aiRWDK3Glo
DQHZl2ukXv
utJDy2xQfZ
l9TT3umZ46
Gv2kTXUlao
pgAhv6ZG5L
NMDlhRr3Rb
9Qftb92nWD

==========

IDGgwwda54
qxQmqPPggk
cwioS2WKee
OMGOJqAn8X
F321OuB7gy
u97gZYt1kA
AzIr0iHBIE
ivZWYU5qwF
JInYOWMDOR
eAaszheTty
YvSncKVV4Y
zwE73JHcw3
1UMaAiBpgk
xm6ni0xKgv
dRDmnI9bHl

==========

zl1eXQ6zSE
7SkVXSxkVN
d3r1vsBcor
BDzdnFLmtY
NiFOjMUTb8
l0Vu8eEelc
LiX0FB6PEx
6TuoW7jyvb
F26gBSCXkL
InmcGgRq8E
XJQj73j8Mh
C6Xa6mcuEf
pou2iddFGG
Lewk9urM9e
pH6TGuLcjm

==========

KCUdhaKnzV
9VDoIucopW
TKFZDaYQ0s
vgRmIyCPD6
wzaTx4bB8O
guJJE03n9f
2zmGkrIjw0
pQJVrJXN8c
N127fKM1tv
GRuawvS96X
RK1oscOGTe
Xwko68yQ1M
Tn0WNwsX1o
J43ivneqPK
uQlNw1iwAG

==========

XtizVJ20cU
p27Rq5BumP
dBIf6pBAWZ
3DUj77S4TE
0gTLeRYEJz
9bURHjP7Tk
9zCWRAqshT
qpeR3ETmE1
OsYmgfIOdr
xLZyJRar36
zn2PrBKcqE
8VP8FY5HOZ
1YYc9ruUHe
TeiuH0pZBQ
WXHOUhAxDG

==========

Press any key to continue...

*/


CommonTater

  • Guest
Re: Question on my Random Password Generator
« Reply #1 on: June 29, 2010, 02:54:07 PM »
In particular, I'm wondering if re-randomizing the array between password (not character) generation loops would add any increased randomness.

If you are using time() as your seed, you need at least one second between calls. 
Within the same second multiple calls to randomize time will return the same sequence.