Is there necessarily an infinite number of inputs to any given output in a crypto hash function? This might be a very easy question. Let's consider cryptographic hash functions with the usual properties, weak and strong collision resistance and preimage resistance.

For any given output, obviously there are multiple inputs. But is that necessarily an infinite number of preimages, for any given hash value?

How would I go about giving a formal proof that there exists no crypto hash function $h$ such that there is a given value $v = h(m)$ for which the possible set of inputs $m^*$ is finite? Would this necessarily break collision resistance?
For any given output, obviously there are multiple inputs.


This is not true. Namely, for any is not true. There are outputs such that multiple inputs produce them - this is consequence of pigeonhole principle. But we cannot claim that this holds for any output for any hash function. This can be true for some specific hash function only.


  ... proof that there exists no crypto hash function ...


There is no proof because this statement is simply false. Here is a simple example of a hash function that has many hashes that have finite number of preimages.

function hash(x){
    if (x.length &lt;= 64) {
        return 
            '1' ||
            '0000000000000000000000000000000000000000000000000000000000000000' ||
            sha3(x);
    } else {
        return
            '0' ||
            sha3(x) ||
            '0000000000000000000000000000000000000000000000000000000000000000';
    }
}


The number of inputs that produce hashes starting with '1' is finite.