Untitled
unknown
plain_text
4 years ago
1.2 kB
4
Indexable
uint64_t* sha256_hash(int num_hashes, char* str) { uint64_t* results = calloc(num_hashes, sizeof(uint64_t)); unsigned char digest[SHA256_DIGEST_LENGTH]; int i; for (i = 0; i < num_hashes; i++) { SHA256_CTX sha256_ctx; SHA256_Init(&sha256_ctx); if (i == 0) { SHA256_Update(&sha256_ctx, str, strlen(str)); } else { SHA256_Update(&sha256_ctx, digest, SHA256_DIGEST_LENGTH); } SHA256_Final(digest, &sha256_ctx); results[i] = (uint64_t)* (uint64_t* )digest; } return results; } BloomFilter bf; /* elements = 10; false positive rate = 5% custom hashing algorithm = sha256_hash function */ bloom_filter_init_alt(&bf, 10, 0.05, &sha256_hash); bloom_filter_add_string(&bf, "test"); if (bloom_filter_check_string(&bf, "test") == BLOOM_FAILURE) { printf("'test' is not in the Bloom Filter\n"); } else { printf("'test' is in the Bloom Filter\n"); } if (bloom_filter_check_string(&bf, "blah") == BLOOM_FAILURE) { printf("'blah' is not in the Bloom Filter!\n"); } else { printf("'blah' is in th Bloom Filter\n"); } bloom_filter_stats(&bf); bloom_filter_destroy(&bf);
Editor is loading...