Hash

From Organic Design
Revision as of 23:04, 9 August 2014 by Nad (talk | contribs) (add MD5 and heading for cryptocurrency secion)
Glossary.svg This page describes a concept which is part of our glossary

Hashing is the name given to a function that chops up, scrambles and compresses or expands its argument until it is unrecognisable. Encrpytion performs the same function as hashing, with hashing one gets a fixed number of random bits, where as encryption produces random bits that are the same length as the input data. both hashing and encryption consistently produce the same random bits given the same input data.

As the input is variable in size and the output is of fixed length, it is possible for two different input keys to have the same output. This is known as a Hash collision.

The role of hashing in crypto-currencies

todo...

MD5

In cryptography, MD5 (Message-Digest algorithm 5) is a widely used cryptographic hash function with a 128-bit hash value. As an Internet standard (RFC 1321), MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of files. An MD5 hash is typically a 32-character hexadecimal number. Recently, a number of projects have created MD5 "rainbow tables" which are easily accessible online, and can be used to reverse many MD5 strings into their original meanings.

MD5 was designed by Ronald Rivest in 1991 to replace an earlier hash function, MD4. In 1996, a flaw was found with the design of MD5; while it was not a clearly fatal weakness, cryptographers began to recommend using other algorithms, such as SHA-1. In 2004, more serious flaws were discovered making further use of the algorithm for security purposes questionable, but it's still very useful for simple data integrity purposes.

On any Unix-like OS you can simply use the following command

md5sum filename

Digest::MD5::Perl is a perl implementation of Ronald Rivests md5 hash algorithm. It is written in perl only and because of this it is slow but it works without C-Code. You should use Digest::MD5 instead of this module if it is available.

See also