Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: othersrc/external/bsd/hashtree
Module Name: othersrc
Committed By: agc
Date: Tue Jun 21 14:51:38 UTC 2011
Update of /cvsroot/othersrc/external/bsd/hashtree
In directory ivanova.netbsd.org:/tmp/cvs-serv26431
Log Message:
Initial import of hashtree functions into othersrc.
The hashtree, or Merkle tree algorithms, split a file up into blocks,
and calculate a message digest on those blocks. Subsequent digests
are concatenated onto the previous digests. If there is more than one
digest calculated, a higher level of digest is then calculated across
the lower-order digests, to provide a tree-like structure of message
digests.
If there is only one digest calculated, then the hashtree in this
degenerate case is the same as the digets of the file.
% hashtree -n 1 dist/hashtree.c
HASHTREE/sha1/1/10358/10358 (dist/hashtree.c) =
253f185d39783fd29ca6a7936fee4b50e3775f39
% sha1 dist/hashtree.c
SHA1 (dist/hashtree.c) = 253f185d39783fd29ca6a7936fee4b50e3775f39
%
hashtree(1) can be used to specify the hashing algorithm used
(including hmac algorithms), and the size of the blocks.
% hashtree -b 4096 dist/hashtree.c
HASHTREE/sha1/2/10358/4096 (dist/hashtree.c) =
1a958db53705b1ef4ef4e7418f7aa6e25226c4468783684b4ff3d152a66a38e7ad3e5c8d88ad0851b5f916e7d015015c6e0ddf0cef4cf7af2d48a0ad6db45855c61ea5454b579221bcbeeb5e282e626d
%
Alternatively, the number of desired blocks can be specified, and
hashtree will work out the block size from that parameter and the size
of the file. By default, a blocksize of 1024 is used. There is the
possibility of producing very large digests using hashtree(1):
% hashtree dist/hashtree.c
HASHTREE/sha1/2/10358/1024 (dist/hashtree.c) =
6a765d5809534fa75fd2f4f2f88168e65cb1182f91ac14db77b0052ae083743c10ed0ccea98ebf44a945eb72ee0303a8b5b89a2a590ec2e684418942bae3e0be34567bd12721167239fdf641c24ec51b59426924a32760adf11370aca375d60a97364613f93e1e44f848a3557c141b7422aa7e63fef99ff4e056124513c228c9a33e0dff08e6baa2903f959f428dd60f9a6390b0d4108d0826713d33ab6e5520fe20e61ac700659eb5e6a1cf5653da05d65c0d792cd3affaadd037372cfbf7085e14caea50dd89e2790cd982824fec985e2a97fcbbc415e91c27dc4f3089ec446784262269677aa1736fba2e5a768114
Merkle trees can be used to implement Lamport's signature scheme - see
http://www.rsa.com/rsalabs/node.asp?id=2003
and there are also uses in ZFS:
http://blogs.oracle.com/bonwick/entry/zfs_end_to_end_data
(although indirect pointers can be a tad difficult here?)
Hash trees are written up more generally in:
http://en.wikipedia.org/wiki/Hash_tree
There are also uses of the tiger algorithm being used to produce more
specific "tiger trees".
Status:
Vendor Tag: CROOKS
Release Tags: hashtree-base
N othersrc/external/bsd/hashtree/Makefile
N othersrc/external/bsd/hashtree/dist/hashtree.c
N othersrc/external/bsd/hashtree/dist/Makefile
N othersrc/external/bsd/hashtree/dist/TODO
N othersrc/external/bsd/hashtree/dist/libhashtree.3
N othersrc/external/bsd/hashtree/dist/hashtree.h
N othersrc/external/bsd/hashtree/dist/main.c
N othersrc/external/bsd/hashtree/dist/hashtree.1
N othersrc/external/bsd/hashtree/hashtree/Makefile
N othersrc/external/bsd/hashtree/libhashtree/Makefile
N othersrc/external/bsd/hashtree/libhashtree/shlib_version
No conflicts created by this import
Home |
Main Index |
Thread Index |
Old Index