Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Hash Functions

  1. Mar 17, 2007 #1
    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. jcsd
  3. Mar 17, 2007 #2
    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
  4. Mar 18, 2007 #3
    How would you get the system time in c++ and use it to create a random string?
     
  5. Mar 18, 2007 #4

    DaveC426913

    User Avatar
    Gold Member

    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));
     
  6. Mar 19, 2007 #5
    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
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Hash Functions
Loading...