I don't see how this isn't an exception.

A failed validation is a failure, and it is certainly unusual (which is a synonym with the word exceptional). It indicates that something has gone wrong, and is definitely not the normal case.

You also specifically mention "or the file was corrupt" as an example of an Exception, which is exactly what a checksum failure would indicate - the file was corrupt. The purpose of checking the checksum is to detect whether file corruption happened. By your argument, this is definitively an Exception use case.

The Exception's args can very easily contain the data about what went wrong, so there's no need for that second arg either.