libfnv
======
C language FNV hash function library with all supported bit lengths of FNV-1a: 32, 64, 128, 256, 512, and 1024
Compilation instructions
Clone from repo:
git clone https://github.com/fnvhash/libfnv.git
OR
download a release and extract it.
tar xvfz libfnv*tar*
cd into the extracted directory:
cd libfnv*
Use ls to find out if there is a configure script.
ls -l configure
If not, run:
./autogen
Once the configure script is available, compilation is as normal for all
autoconf enabled projects:
./configure
make
sudo make install
Compiling and Running your Own Programs
Once the package is installed, it may easily be compiled and linked with:
gcc my_prog.c -o my_prog --static `pkg-config --libs --cflags libfnv`
In C, the library follows standard conventions. my_prog.c can be as simple as:
```c
#include
#include
int main(int argc, char **argv) {
const char *test_string = "foobar";
uint64_t hval;
char result[17];
fnv64Init(&hval);
fnv64UpdateBuffer(&hval, test_string, 6);
fnv64ResultHex(result, &hval);
printf("%s\n", result);
return 0;
}
```
After you have compiled the example program above, you may try running it to
verify the results of computing the 64-bit FNV-1a hash of the 6-byte string foobar.
./my_prog
Prepackaged Command Line Tools
This library includes a set of command line tools that may be used to compute
FNV-1a hashes in any size. Simply select a bit size from 32, 64, 128, 256, 512, or 1024 and enter a command:
fnv64sum [FILE]
All four bit sizes are supported with the corresponding command names.
To test or verify your own FNV implementation, you may use this library or
another one such as
this [online FNV hash calculator](http://fnvhash.github.io/fnv-calculator-online/).
On a modern consumer-grade computer, this library is able to process about a
gigabyte of data per second using fnv32sum and fnv64sum, or about
100 megabytes per second using fnv128sum or fnv256sum.
[Downloads of Releases](http://fnvhashdl.s3-website-us-west-2.amazonaws.com/)