<story><title>Speed Hashing</title><url>http://www.codinghorror.com/blog/2012/04/speed-hashing.html</url></story><parent_chain><item><author>codinghorror</author><text>Well, I&apos;d say a hash that has no need whatsoever to be tamper-proof (no attackers, ever) and cares only about speed is a &lt;i&gt;checksum&lt;/i&gt; -- so maybe a terminology issue.&lt;p&gt;I agree there are certainly other uses for hashes, just trying to distinguish between hashes and checksums.&lt;p&gt;Re-reading what I wrote, I open with &quot;Hashes are a bit like fingerprints for data. A given hash uniquely represents a file, or any arbitrary collection of data&quot; so the context of this article is hash functions that are able to uniquely identify something in a reliable, trustworthy way -- either checksums (fast, no need for security) or hashing (slower, more reliable, possibly &quot;secure&quot; for some definition of secure), but always in the context of &quot;can I &lt;i&gt;trust&lt;/i&gt; this value to tell me that the data is really what I think it is?&quot;&lt;p&gt;Of course there is a tradeoff with speed; a person&apos;s name can be good enough identifier (checksum) in some circumstances, but maybe other circumstances require more reliability like DNA or fingerprints (secure-ish hash), at the cost of being far slower to collect and validate and way more onerous.</text></item><item><author>judofyr</author><text>Nitpicks. It seems that he&apos;s talking about password hashing:&lt;p&gt;&amp;#62; &quot;Hashes are designed to be tamper-proof&quot;. Wrong. &lt;i&gt;Cryptographically secure&lt;/i&gt; hash functions are.&lt;p&gt;&amp;#62; &quot;Hashes, when used for security, need to be slow.&quot; Wrong. &lt;i&gt;Password hashes&lt;/i&gt; needs this; not SHA1/MD5 etc.</text></item></parent_chain><comment><author>nadam</author><text>I am afraid the terminology you use is not canonical.&lt;p&gt;A hash (function) is any function that maps a big variable-length data structure to a smaller (fixed-length) data structure.&lt;p&gt;A checksum is a special hash (function) which has the purpose of detecting accidental errors during transmission or storage. (This makes them different from hash functions used for example in hash tables. For example relevant question: minimum how many badly transmitted bits are needed to break the error detection in the case of a specific checksum?)&lt;p&gt;A cryptographic hash function is another kind of special hash function which also has a very good definition on wikipedia.&lt;p&gt;(Basically these are the definitions on Wikipedia, and I think they are fine. If the terminology you use would be canonical we would use the name &apos;checksum table&apos; instead of &apos;hash table&apos;, and it would be quite illogical also, because the term &apos;checksum&apos; really includes purpose in its name &apos;checking something&apos;).</text></comment>
<story><title>Speed Hashing</title><url>http://www.codinghorror.com/blog/2012/04/speed-hashing.html</url></story><parent_chain><item><author>codinghorror</author><text>Well, I&apos;d say a hash that has no need whatsoever to be tamper-proof (no attackers, ever) and cares only about speed is a &lt;i&gt;checksum&lt;/i&gt; -- so maybe a terminology issue.&lt;p&gt;I agree there are certainly other uses for hashes, just trying to distinguish between hashes and checksums.&lt;p&gt;Re-reading what I wrote, I open with &quot;Hashes are a bit like fingerprints for data. A given hash uniquely represents a file, or any arbitrary collection of data&quot; so the context of this article is hash functions that are able to uniquely identify something in a reliable, trustworthy way -- either checksums (fast, no need for security) or hashing (slower, more reliable, possibly &quot;secure&quot; for some definition of secure), but always in the context of &quot;can I &lt;i&gt;trust&lt;/i&gt; this value to tell me that the data is really what I think it is?&quot;&lt;p&gt;Of course there is a tradeoff with speed; a person&apos;s name can be good enough identifier (checksum) in some circumstances, but maybe other circumstances require more reliability like DNA or fingerprints (secure-ish hash), at the cost of being far slower to collect and validate and way more onerous.</text></item><item><author>judofyr</author><text>Nitpicks. It seems that he&apos;s talking about password hashing:&lt;p&gt;&amp;#62; &quot;Hashes are designed to be tamper-proof&quot;. Wrong. &lt;i&gt;Cryptographically secure&lt;/i&gt; hash functions are.&lt;p&gt;&amp;#62; &quot;Hashes, when used for security, need to be slow.&quot; Wrong. &lt;i&gt;Password hashes&lt;/i&gt; needs this; not SHA1/MD5 etc.</text></item></parent_chain><comment><author>pbsd</author><text>Secure hashes &lt;i&gt;need&lt;/i&gt; to be fast. If you look at the ongoing SHA-3 competition, you will see an enormous focus on speed, on both software and hardware.&lt;p&gt;Why do they need to be fast? They&apos;re used &lt;i&gt;everywhere&lt;/i&gt;. Opening up notepad.exe, you&apos;ll verify a handful of digital signatures, each of which will compute a hash of the binary as first order of business. HMAC is used in virtually every secure network protocol worth using --- it uses an underlying hash as building block. Need a fast (determistic) pseudorandom generator? Hashes it is.&lt;p&gt;Password hashing (and key derivation) is about the single use of hashes that requires computational hardness. It &lt;i&gt;should&lt;/i&gt; be treated separately.</text></comment>