On 15/08/16 23:09, Ellison Anne Williams wrote: > I recall this being a quick fix for a hash collision issue. Moreover, the > hash (aside from the embedded selector hash) is used as an 'index' into the > 'encryption matrix' -- it doesn't make any sense to have a negative row > index, but the matrix representation is just that in this case, a > representation, and thus we don't really have to play by matrix > conventions. > > When I removed the absolute value from the hash and ran it through the > tests (in memory and distributed), everything passed. We can remove it, if > desired.
Ok, I'll include it in an incoming PR. Removing the abs() now makes it symmetrical with the message digest implementation -- which makes me happy :-) Regards, Tim > On Mon, Aug 15, 2016 at 11:18 AM, Tim Ellison <[email protected]> wrote: > >> On 12/08/16 16:37, Ellison Anne Williams wrote: >>> Thought that I responded to this -- oops - sorry! >>> >>> As hashes can be (naturally) negative, taking the absolute value avoid >> twos >>> complement issues when we are only taking certain bits of the hash >> (instead >>> of the whole thing). I would have to go back through to see if we could >>> alleviate these issues in another way - it's possible (as I recall, this >>> was a quick fix). >> >> Not sure that I understand that, as the code is dependent upon the >> return value of String#hashCode (i.e. it is an 'unknown' 32-bit value). >> >> You are just as likely to get a hash collision by 'folding' the hash >> value range using abs() as you are taking the lower bits and ignoring >> the sign bit, aren't you? >> >> Regards, >> Tim >> >>> On Fri, Aug 12, 2016 at 11:06 AM, Tim Ellison <[email protected]> >> wrote: >>> >>>> Anyone got thoughts on this? >>>> >>>> On 10/08/16 17:23, Tim Ellison wrote: >>>>> Why does >>>>> org.apache.pirk.utils.KeyedHash#hash(String key, int bitSize, String >>>>> input) >>>>> >>>>> have >>>>> int fullHash = Math.abs(concat.hashCode()); >>>>> >>>>> What is the value of performing the "Math.abs" in computing this hash? >>>>> >>>>> p.s. I now realize I'm entering the toddler phase of Pirk development, >>>>> where I wander around constantly asking "why?" :-) >>>>> >>>>> Regards, >>>>> Tim >>>>> >>>> >>> >> >
