# Hash Functions

1. Mar 17, 2007

### chaoseverlasting

What exactly are hash functions and how do you use them to create a random string? What other ways are there to create random strings.

2. Mar 17, 2007

### arevolutionist

http://en.wikipedia.org/wiki/Hash_functions

One does not implement hash functions to produce a random string. Hash functions take a string as an argument and output a string of a smaller size which is a hash that represents the original string. An example of a hash function would be the famous DES.

If you wish to produce a random string and not what a hash function does, you need a random byte generator. There are many methods of random generators. A common implementation of a random generator is to take the value of the time, and do a manipulation on it. Once you have a random byte generator, you can produce the number of bytes you want to produce a random string.

Last edited: Mar 17, 2007
3. Mar 18, 2007

### chaoseverlasting

How would you get the system time in c++ and use it to create a random string?

4. Mar 18, 2007

### DaveC426913

I am not a C programmer but it seems to me you'd use the pseudo random number generator and seed it with the time:

Code (Text):
#include <ctime>    // For time()
#include <cstdlib>  // For srand() and rand()
srand(time(0));

5. Mar 19, 2007

### arevolutionist

Here is an example of a random string generator written in C. It generates a string of random capital letters.

Code (Text):

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

int
main(int argc, char *argv[])
{
if(argc < 2){
printf("USAGE: %s [Length of string]\n", argv[0]);
return 0;
}

int length      = atoi(argv[1]);
char *randstr   = malloc(length + 1);
randstr[length] = '\0';

time_t ltime = time(NULL);
srand(ltime);

int i;
for(i = 0; i < length; i++)
randstr[i] = (rand() % 26) + 65;

printf("%s\n", randstr);
return 0;
}

Here is an example of the output:

Code (Text):

$./randstr USAGE: ./randstr [Length of string]$ ./randstr 20
MTZEKHHTQJGPDNHBNSTN
$./randstr 20 IEMBTDVFDEDMFWXEYESX$ ./randstr 20
EMCYCCJOTCAJHCNHMQOH
\$

Last edited: Mar 19, 2007