Out of SHA3, K12, SHA2 and Blake, SHA-512 is one of the fastest (some variants of Blake2 are faster), and it's the one with the longest track record, while the Blake-family and SHA3 are fairly new. It's also widely supported nearly everywhere. All that makes truncated SHA-512 a sane default.
https://twitter.com/KeccakTeam/status/834789451708628995
> It's also widely supported nearly everywhere
This is true for the non-truncated variants, but I am not aware of any protocol that uses the truncated ones.
I will agree with the "longest track record" however, this is an important part.
Creating a truncate(SHA-512, 256) out of regular SHA-512 is trivial, so it true that it is widely supported nearly everywhere.
SHA-512/256 may be used to hash a message, M, having a length of ๐ bits, where 128 0 โค ๐ < 2.
The algorithm is defined in the exact same manner as SHA-512 (Sec. 6.4), with the following two exceptions:
1. The initial hash value, H(0), shall be set as specified in Sec. 5.3.6.2; and
2. The 256-bit message digest is obtained by truncating the final hash value, H(N), to its left-most 256 bits.
(from ยง6.7 in http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4....)EDIT: I trust 'tptacek (in sibling comment) that if there is no chance of protocol confusion, there is no advantage to the different initial value.
There is no functional advantage to having a different IV for SHA-2 5-2/256.
Unless you are doing hash trees, in which case SHA-512 is slower than SHA-256, and length extension is not possible.
Point is there isn't and shouldn't be a blanket solution.
Could you elaborate on that please? Why would you consider it as the "best all-purpose cryptographic hash"?