<?php
generate();
// FUNCTION
function generate()
{
$digilist = "0123456789ABCDEFGHJKLMNPQRTUVWXY";
//now we generate a new random ID number using the substrings of the digitList string above
$three_chars = NULL;
$three_chars .= substr( $digilist, rand( 1, 9 ), 1 );
$three_chars .= substr( $digilist, rand( 10, 31 ), 1 );
$three_chars .= substr( $digilist, rand( 10, 31 ), 1 );
for( $i = 22; $i < 100; $i++)
{
$id = $three_chars . $i;
$key = get_key( $id );
echo $id . "<br />" . $key . "\n";
}
}
function get_key( $id )
{
$digilist = "0123456789ABCDEFGHJKLMNPQRTUVWXY";
//ok so now we need to generate an MD5 hash of our ID
$hash = md5($id);
//cycle through the hash 16 (length of key) times (in steps of 2 because each hex bytes is 2 digits long)
$i = 0;
$key = NULL;
for ($i; $i < 32; $i+=2)
{
//here we convert the next hex value to an integer and perform a bitwise AND operation against '31'
//31 is the highest substring value in our digit list.
$nextdigit = hexdec(substr($hash, $i, 2)) & 31;
//if 'i' is divisable by 8 (every 4 cycles) then we want to add "-"
if ((($i % 8) == 0) && ($i > 0))
{
$key .= "-".substr($digilist, $nextdigit, 1);
}
else
{
$key .= substr($digilist, $nextdigit, 1);
}
}
return $key;
}