CRC32 catches errors, but then what's the point of SHA?
CRCs are OK to detect naturally-occurring errors. But in cryptography, we face intelligent adversaries, which can use the mathematical properties of CRCs in order to make an arbitrary alteration in a file without altering its CRC. This is easy, even for large CRCs.

Hashes are designed to prevent that (called a second-preimage attack), and other attacks such as making two different files with the same hash (called a collision attack).



If CRCs or cryptographic hashes are different, then their input is different. In a cryptographic context, if CRCs are equal, we can't tell if their input are equal or not; whereas if cryptographic hashes are equal, then their input must be equal (or the hash used is not a secure cryptographic hash).