| Line 8: |
Line 8: |
| | Algorithms such as MD5<ref>https://blog.avira.com/md5-the-broken-algorithm/</ref><ref>http://cryptocrats.com/crypto/md5-the-hash-algorithm-is-now-broken/</ref> and SHA-1<ref>https://www.thesslstore.com/blog/sha-1-collision-created/</ref> have been "broken" by producing collisions. | | Algorithms such as MD5<ref>https://blog.avira.com/md5-the-broken-algorithm/</ref><ref>http://cryptocrats.com/crypto/md5-the-hash-algorithm-is-now-broken/</ref> and SHA-1<ref>https://www.thesslstore.com/blog/sha-1-collision-created/</ref> have been "broken" by producing collisions. |
| | | | |
| − | == MD5 == | + | ==Algorithms== |
| | + | === MD5 === |
| | MD5 became a computing standard <ref>http://tools.ietf.org/html/rfc1321</ref> for hashing but was subsequently found to be insecure<ref>http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf</ref> and was replaced with SHA1. MD5 breaks the input up into 512-bit blocks and churns it down into a 128-bit bit hash. For example, the text "The quick brown fox jumps over the lazy dog" would become (base64 encoded): | | MD5 became a computing standard <ref>http://tools.ietf.org/html/rfc1321</ref> for hashing but was subsequently found to be insecure<ref>http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf</ref> and was replaced with SHA1. MD5 breaks the input up into 512-bit blocks and churns it down into a 128-bit bit hash. For example, the text "The quick brown fox jumps over the lazy dog" would become (base64 encoded): |
| | <code>50842ef1bd9a95a284b395a0f0e0e2f8</code><br /> | | <code>50842ef1bd9a95a284b395a0f0e0e2f8</code><br /> |
| | MD5 was intended to solve a weakness in MD4, although both were actually published as open standards at the same time. For this reason, MD4 was never largely implemented and MD5 became the algorithm of choice. | | MD5 was intended to solve a weakness in MD4, although both were actually published as open standards at the same time. For this reason, MD4 was never largely implemented and MD5 became the algorithm of choice. |
| | | | |
| − | == RIPEMD == | + | === RIPEMD === |
| | RIPEMD (Race Integrity Primitives Evaluation Message Digest)<ref>"RIPEMD." TheFreeDictionary.com. 2019. Farlex, Inc. 15 May. 2019 https://acronyms.thefreedictionary.com/RIPEMD</ref> was released in 1992, and based on MD4. This original RIPEMD-128 ran two instances of the MD4 algorithm in parallel. It was therefore less efficient than MD5, and not entirely trusted by many, since MD4 had a weakness which had been known since its public release. A hash collision was found with PIREMD in 2004, and the industry stopped using it. However, RIPEMD-160 (the most popular), RIPEMD-256, are RIPEMD-320 are strengthened (utilizing larger keys) versions of this algorithm which were released in 1996 and are still in use today. | | RIPEMD (Race Integrity Primitives Evaluation Message Digest)<ref>"RIPEMD." TheFreeDictionary.com. 2019. Farlex, Inc. 15 May. 2019 https://acronyms.thefreedictionary.com/RIPEMD</ref> was released in 1992, and based on MD4. This original RIPEMD-128 ran two instances of the MD4 algorithm in parallel. It was therefore less efficient than MD5, and not entirely trusted by many, since MD4 had a weakness which had been known since its public release. A hash collision was found with PIREMD in 2004, and the industry stopped using it. However, RIPEMD-160 (the most popular), RIPEMD-256, are RIPEMD-320 are strengthened (utilizing larger keys) versions of this algorithm which were released in 1996 and are still in use today. |
| | | | |
| − | == SHA-1 == | + | === SHA-1 === |
| | SHA (Secure Hash Algorithm) is a set of functions for hashing which fixed the problems found in MD5 and has since become the industry standard. SHA1 hashes down to a 160-bit hash. For example, the text "The quick brown fox jumps over the lazy dog" would become (base64 encoded): | | SHA (Secure Hash Algorithm) is a set of functions for hashing which fixed the problems found in MD5 and has since become the industry standard. SHA1 hashes down to a 160-bit hash. For example, the text "The quick brown fox jumps over the lazy dog" would become (base64 encoded): |
| | <code> | | <code> |
| Line 22: |
Line 23: |
| | SHA-1 has been found not to have sufficient complexity to reduce collisions, so it is now disfavored. | | SHA-1 has been found not to have sufficient complexity to reduce collisions, so it is now disfavored. |
| | | | |
| − | == SHA-2== | + | === SHA-2=== |
| | SHA-2 (typically SHA-256) is an updated version of SHA-1, which adds complexity to help reduce the chance of hash collisions. | | SHA-2 (typically SHA-256) is an updated version of SHA-1, which adds complexity to help reduce the chance of hash collisions. |
| | "SHA-224," "SHA-384," and "SHA-512" are also forms of SHA-2, which are using other key lengths; the trailing number states the key length in use. The greater the key size, the more difficult it is to have a hash collision, as this produces a longer hash. For example, the text "The quick brown fox jumps over the lazy dog" using SHA-256 would produce: | | "SHA-224," "SHA-384," and "SHA-512" are also forms of SHA-2, which are using other key lengths; the trailing number states the key length in use. The greater the key size, the more difficult it is to have a hash collision, as this produces a longer hash. For example, the text "The quick brown fox jumps over the lazy dog" using SHA-256 would produce: |