Hashing to an 8-bit Integer
I needed to come up with a way to spread out chunks of a subnet among a handful of users, so I came up with this routine:
sub hash256 {
my $str = shift;
my $hmac = hmac_sha256($str);
my $val = unpack "L*" => $hmac;
my $hash = $val % 256;
return $hash;
}
Used:
for my $str ( qw/scott paul mark jayce rvd james/ ) {
say sprintf "%-15s %d" => $str, hash256($str);
}
Now the result of my $hash = hash256('joe')
can be used as, say, the third octet in a cidr: 192.168.$hash.0/24
.
Last modified on 2014-12-16