[My problem with this is that the source of entropy is particularly
 bad... --Perry]

BTW, here's a simple program I use to generate passwds and/or diceware
words.  For diceware, use "grep `randpwd -` diceware-list |cut -f2"

Sorry that it's a bit of an obfuscated C contest entry, but I had written
a somewhat simpler one, and then when I wrote this one I tried to keep
from making it much longer than the previous incarnation.  Silly, I know.

        -=-=-           randpwd.c       -=-=-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>

int main(int argc, char **argv) {
  struct timeval tv;
  char chars[] = "abcdefghijklmnopqrstuvwxyz"
                 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                 "0123456789,.;'/-=";
  int i, seed = 0, len = strlen(chars);
  FILE *fp = fopen("/dev/random", "r");
  if (fp) { fread(&seed, 1, sizeof(seed), fp); fclose(fp); }

  gettimeofday(&tv, NULL);
  srand(tv.tv_sec ^ tv.tv_usec ^ getpid() ^ seed);

  if (argc > 1) for (i = 0; i < 5; i++) printf("%d", rand()%6+1);
  else for (i = 0; i < 8; i++) printf("%c", chars[rand()%len]);

  return printf("\n")-1;
}
        -=-=-           randpwd.c       -=-=-

'return printf("\n")-1;', hey I said it was slightly obfuscated.  :-)
Coderpunks write cyphe, or something.

David R. Conrad <[EMAIL PROTECTED]>  PGP keys (0x1993E1AE and 0xA0B83D31):
DSS  Fingerprint20 = 9942 E27C 3966 9FB8 5058  73A4 83CE 62EF 1993 E1AE
RSA  Fingerprint16 = 1D F2 F3 90 DA CA 35 5D  91 E4 09 45 95 C8 20 F1
Note: Due to frequent spam abuse, I accept no email from *.da.uu.net.

Reply via email to