packages icon
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