Skip to content
This repository has been archived by the owner on Sep 9, 2024. It is now read-only.

Hashing with certain seeds are not consistent in Javascript and Java #25

Open
senthil-root opened this issue Dec 12, 2019 · 0 comments
Open

Comments

@senthil-root
Copy link

senthil-root commented Dec 12, 2019

Hashing with hashes above ### > 0x7fffffff produces hashes which are different from what is generated using Java.

Example (In JavaScript js-xxhash):
Seed : 0x7FFFFFFF

var seed = 0x7FFFFFFF;
var Hasher = xxhashjs.h64( seed );
var stringToHash = 'ABCD';
var h = Hasher.update( stringToHash ).digest().toString(16)
console.log('getHash("' + stringToHash + '") with seed [0x' + seed.toString(16) + "] = " + h)

output:

getHash("ABCD") with seed [0x7fffffff] = 5479e1557e1d305a

Example (In JavaScript js-xxhash):
Seed : 0x80000000

seed = 0x80000000;
Hasher = xxhashjs.h64( seed );
stringToHash = 'ABCD';
h = Hasher.update( stringToHash ).digest().toString(16)
console.log('getHash("' + stringToHash + '") with seed [0x' + seed.toString(16) + "] = " + h)

output:

getHash("ABCD") with seed [0x80000000] = 846bea22a8abeaf0

Here is the same operation using Java
Example (In Java xxhash):
Seed : 0x7FFFFFFF

long seed = 0x7FFFFFFF;
String stringToHash = "ABCD";
StreamingXXHash64 streamingXXHash64 = XXHashFactory.safeInstance().newStreamingHash64(seed);
streamingXXHash64.update(stringToHash.getBytes(), 0, stringToHash.length());
System.out.println("getHash(\"" + stringToHash + "\") with seed [0x" + Long.toHexString(seed) + "] = " + Long.toHexString(streamingXXHash64.getValue()));

output

getHash("ABCD") with seed [0x7fffffff] = 5479e1557e1d305a

Example (In Java xxhash):
Seed : 0x80000000

long seed = 0x80000000;
String stringToHash = "ABCD";
StreamingXXHash64 streamingXXHash64 = XXHashFactory.safeInstance().newStreamingHash64(seed);
streamingXXHash64.update(stringToHash.getBytes(), 0, stringToHash.length());
System.out.println("getHash(\"" + stringToHash + "\") with seed [0x" + Long.toHexString(seed) + "] = " + Long.toHexString(streamingXXHash64.getValue()));

output

getHash("ABCD") with seed [0x80000000] = 445bfd9f010fc179

While using 0x7FFFFFFF as seed both Java and Javascript implementation creates hash of 5479e1557e1d305a for 'ABCD', using 0x80000000 as seed, JavaScript implementation produces hash of 846bea22a8abeaf0 and Java implementation produces hash of 445bfd9f010fc179

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant