There are some properties that cryptographically secure hash functions
strongly require, that are not so strongly required for
non-cryptographically secure hash functions:
- preimage resistance (given a hash
h it must be difficult to find a message
m that yields
h when hashed
- weak collision resistance (given a message
m1 it must be difficult to find a different message
m2 so that
m2 yield the same hash)
- strong collision resistance (it should be difficult to find any messages
m2 that yield the same hash)
In those points, you see a lot of difficult, which is a qualitative measure instead of a quantitative one. The best answer here is feasibility: there is a fuzzy line when something becomes feasible and those lines move over time (as computation capabilities grow exponentially according to Moore's Law, once difficult problems can now be solved by your cell phone).
In general it's good practice to assume that difficult means that the time to achieve some goal is NP-complete. This means the time required to break the hash grows strongly as you increase the hash length.
Another point is, that a cryptographically secure hashing algorithm can be useful in some applications, but not in others. It depends on the model of your attacker, the nature of the information you want to protect and things like performance requirements (as a general rule, the better the cryptographic properties of a hash, the worse it's runtime behaviour).