This MD5 hash generator is useful for encoding passwords, credit cards numbers and other sensitive date into MySQL, Postgress or other databases. PHP programmers, ASP programmers and anyone developing on MySQL, SQL, Postgress or similar should find this online tool an especially handy resource.
An MD5 hash is created by taking a string of an any length and encoding it into a 128-bit fingerprint. Encoding the same string using the MD5 algorithm will always result in the same 128-bit hash output. MD5 hashes are commonly used with smaller strings when storing passwords, credit card numbers or other sensitive data in databases such as the popular MySQL. This tool provides a quick and easy way to encode an MD5 hash from a simple string of up to 256 characters in length.
MD5 hashes are also used to ensure the data integrity of files. Because the MD5 hash algorithm always produces the same output for the same given input, users can compare a hash of the source file with a newly created hash of the destination file to check that it is intact and unmodified.
An MD5 hash is NOT encryption. It is simply a fingerprint of the given input. However, it is a one-way transaction and as such it is almost impossible to reverse engineer an MD5 hash to retrieve the original string.
MD5 is a message-digest algorithm. It's used to compute a hash value in cryptography. So what's an hash function then? Simply put, a hash function takes a block of data and returns a fixed-size bit string (hash value). The data used by hash functions is referred to as a "message", while the computed hash value is referred to as the "message digest".
MD5, like other hash functions, is used in digital signatures, message authentication codes, to index data in hash tables, for finger-printing, to detect duplicate data, uniquely identify files, and as checksums to detect accidental data corruption.
MD5 produces a 128-bit (16 bytes) hash value. It's usually represented as a hexadecimal number of 32 digits.
You can't! MD5 is NOT an encryption algorithm! A lot of people are under the impression that MD5 encrypts data. It does no such thing. All it does is compute a hash value for a given set of data.
You can't! MD5 is NOT reversible. Hash functions are used as one-way methods. They take the data (messages) and compute hash values (digests). The inverse can't be done.
To better explain why a MD5 is NOT reversible, here's very simple example:
Using MD5 on text data of 750,000 characters, we obtain a mere 32 digits digest. Now if I wanted to revert this, how could I possibly determine with exactitude which 750,000 characters were used from just 32 digits?!? This would be the BEST compression algorithm in the world :P
To get a collision, on average, you'll need to hash about 6 billion files per second for 100 years. Read about the Birthday Paradox to know more.
Rainbow tables are reverse-hash lookup tables. Because MD5 computes the same hash value for a given message, it's fairly easy to use brute force to lookup a value. For example, one could precompute the digest of all 8 characters alpha-numeric combinations and they could then scan a password table to see which password corresponds to which digest. This is one of the reason why you should use a salt to compute your password digest.
MD5 was proven to be non-collision resistant. BUT it really depends on where and how you use it.
If you intend to use MD5 as a simple checksum algorithm or for a unique constraint on a database table, it'll work perfectly. MD5 is compact (only 32 digits!), therefore inexpensive on storage, and is also crazy fast to compute. Just avoid using MD5 for password digests or other HIGHLY critical security systems. There are LOTS of security guideline on the web to help you out. If you are unsure about using MD5, you can try SHA-256 instead.