This is the fingerprint 0.75 package, gamma. 940205 Daniel J. Bernstein, djb@silverton.berkeley.edu. The fingerprint program produces a base-64-sanely-encoded fingerprint of its input. I imagine this fingerprint as something universal and permanent, which people will use forever. If the fingerprint is ever broken, I'd rather make an entirely new version than try to extend this one. A fingerprint is 76 characters long. What does it contain? Here's a list: 1. A Snefru-8 (version 2.5, 8 passes, 512->256) hash. (Code derived from the Xerox Secure Hash Function.) 2. An MD5 hash, as per RFC 1321. (Code derived from the RSADSI MD5 Message-Digest Algorithm.) 3. A CRC checksum, as in the new cksum utility. 4. Length modulo 2^40. The output format is not expected to be compatible with anything. However, I have helper utilities which take a fingerprint and produce the purported output of Merkle's snefru program (fptosnefru), the purported output of RSADSI's mddriver -x (fptomd5), or the purported output of the POSIX cksum program (fptocksum). Also included: (1) a clone of the snefru program, with some extra features; (2) a cksum implementation; (3) an md5 driver; (4) libraries with a uniform interface for calculating these hashes; (5) some documentation. To compile: make. This will build the seven executables. It'll also try to use ar+ranlib to make libfprint.a. (On an Alpha, use cc -Dlong=int. On an SGI, use cc -cckr -DRANLIB=echo.) To try a few simple tests: make test. To see how fast the various hash functions can handle a megabyte of data on your machine: make speedtest. To install: as root, make install. This copies the executables, library, include files, and documentation to various spots inside /usr/local. I've written this because I want to set up a global database which maps fingerprints to network locations. Thanks to the tripwire authors for unknowingly giving this project a push, and thanks of course to the hash function designers and implementors. 940202: switched to new getopt/subgetopt 931108: summain had -f and -F switched; fixed Continuing worries: I still have to make sure I'm giving all appropriate credit here. Also, I haven't tested *_addn properly. I'm not too happy with the man pages, which were to a large extent mechanically produced; I'd appreciate any suggestions for improvement. echo hi | fingerprint: JoXEhdflGxZdS89tDd5zpFx0JRJyX0k67EH0Jod7aet4hIjB.hGhon0veN0BZRfi058HZQ06U0JD