Creating Random Strings: Hash Functions & Beyond

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
4 replies · 3K views
chaoseverlasting
Messages
1,051
Reaction score
3
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.
 
Physics news on Phys.org
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:
How would you get the system time in c++ and use it to create a random string?
 
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:
#include <ctime>    // For time()
#include <cstdlib>  // For srand() and rand()
srand(time(0));
 
chaoseverlasting said:
How would you get the system time in c++ and use it to create a random string?

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

Code:
#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:
$ ./randstr
USAGE: ./randstr [Length of string]
$ ./randstr 20
MTZEKHHTQJGPDNHBNSTN
$ ./randstr 20
IEMBTDVFDEDMFWXEYESX
$ ./randstr 20
EMCYCCJOTCAJHCNHMQOH
$
 
Last edited: