I know you can compare the length but many hash types have the same lengths.
Is there a way to identify a hash’s type and whether it has been salted?
For example:
hash=2bf231b0e98be99a969bd6724f42a691
hash=4ac5a4ff764807d6ef464e27e4d1bee3
hash=4d177cec31d658ed22cc229e45d7265e
No; you pretty much can only identify it by the length.
— Edit:
Obviously, however, if you have access to the program generating the hashes, and you can provide input, then you can compare with some result you also calculate (assuming you know the salt.
If you’re really stuck, you can also infer it from the language that’s being used (i.e. if it’s PHP, it’s most likely MD5), and so on.
But from a technical point of view, there is no way to identify a hash; as it would be counter-productive to the goal of security 🙂 (it would take up useless bits in the hash itself to do this identification).