title: Is non destructive hash post processing a good idea?
body: <p>Is it a good idea to do some kind of non destructive post processing (reordering) on hash strings before storing then? Ex:</p>
  
  <pre><code>$hash = strrev(hash($algo, $data . $salt));
  </code></pre>
  
  <p>Other example:</p>
  
  <pre><code>$hash = hash($algo, $data . $salt)
  $hash = strrev(substr($hash, 0, (int) ($length / 2))) . strrev(substr($hash, (int) ($length / 2)));
  </code></pre>
  
  <p>Instead of simply:</p>
  
  <pre><code>$hash = hash($algo, $data . $salt);
  </code></pre>
  
  <p>In other words:</p>
  
  <p>Considering the breaker will not know how the hashes were transformed, will first two examples result in less breakable hashes than third example?</p>
  
  <p>I'm <strong>NOT</strong> saying I will <code>strrev</code> my hashes, this is just the most simple example I could think of to illustrate what "non destructive" means in this context: to post process the hash without reduce algorithm's key space.</p>
  
  <p>Answers I'm <strong>NOT</strong> looking for:</p>
  
  <ul>
  <li>Dude, use a salt to avoid raimbow table blah blah  - Rainbow table is related though</li>
  <li>Just rehash your hash like this <code>hash(hash(hash($data)))</code> - Question is not about rehashing</li>
  <li>Please please please do not roll your own crypto   - That's not what I'm talking about</li>
  <li>DON'T RUN YOUR OWN CRYPTO.                         - This won't help either</li>
  </ul>
  
  <p>Answer I'm actually looking for:</p>
  
  <blockquote>
    <p>This is (is not) a good idea because of ...reasons... Here is some example about why you should (should not) do this: ...example... Also, read this ...paper, article, post, link to a research... that proves my point.</p>
  </blockquote>