END_TEST START_TEST(test_murmurhash3_random) { char test[16]; uint32_t result1; uint32_t result2; unsigned int init_seed; unsigned int seed; size_t len; int i; /* generate a random string so each time we test with different values */ init_seed = time(0); seed = init_seed; /* use also random length (min len = 1) */ len = 1 + rand_r(&seed) % 14; for (i = 0; i < len; i++) { test[i] = 1 + rand_r(&seed) % 254; } test[len] = '\0'; /* null terminate */ fprintf(stdout, "test_murmurhash3_random seed: %d\n", init_seed); result1 = murmurhash3(test, len + 1, init_seed); result2 = murmurhash3(test, len + 1, init_seed); fail_if(result1 != result2); }
END_TEST START_TEST(test_murmurhash3_check) { const char *tests[6] = { "1052800007", "1052800008", "1052800000", "abcdefghijk", "abcdefghili", "abcdefgh000" }; uint32_t results[6]; int i, j; for (i = 0; i< 6; i++) { results[i] = murmurhash3(tests[i], strlen(tests[i]), 0xdeadbeef); for (j = 0; j < i; j++) { fail_if(results[i] == results[j]); } } }
void xdomain_calc_hashes(struct DB_XDomain *xdomain) { unsigned i; unsigned char name[256]; unsigned name_length = 0; /* Convert the name into a single buffer */ for (i=0; i<xdomain->label_count; i++) { const unsigned char *label = xdomain->labels[i].name; unsigned len = label[0]+1; if (name_length + len >= sizeof(name)) break; memcpy(name+name_length, label, len); name_length += len; } /* Now calculate the hashes */ name_length = 0; for (i=0; i<xdomain->label_count; i++) { uint64_t hash; name_length += xdomain->labels[i].name[0]+1; #if 1 hash = murmurhash3( name, /* text being hashed */ name_length, /* length of text to hash */ 1234); #endif #if 0 hash = md5(name, name_length, 1234); #endif xdomain->labels[i].hash = hash; xdomain->hash = hash; /*siphash_x(&hash, domain->name+label_index, label_length+1, result->secret_key, result->hash);*/ } }
static uint32_t sss_mc_hash(struct sss_mc_ctx *mcc, const char *key, size_t len) { return murmurhash3(key, len, mcc->seed) % MC_HT_ELEMS(mcc->ht_size); }
uint32_t sss_nss_mc_hash(struct sss_cli_mc_ctx *ctx, const char *key, size_t len) { return murmurhash3(key, len, ctx->seed) % MC_HT_ELEMS(ctx->ht_size); }