You actually need a family of second-preimage resistant, undetectable, one-way functions. In general, any secure cryptographic hash function (SHA2, SHA3, ...) should work with a little tweak to make it keyed. You do not need it to be a PRF, and the function is fixed length. Hence, if you also fix the key length, using
SHA3(K || M)
is fine (and then taking the amount of output bits needed). For SHA2 (or any Merkle-Damgard construction) you obtain a nicer security argument, if you first absorb the key into a compression function call and then the message. I.e., you do
SHA2-256( pad(K, 512) || M ),
where pad(K, 512) applies an injective padding to turn K into a 512 bit string. Assuming fixed length for K, appending sufficiently many 0's works just fine. Here I took into account that the block length of SHA2-256 is 512 bits. For different block-lengths you have to adjust the length accordingly. Because of Merkle-Damgard strengthening (which requires the application of the length padding) this does not increase the number of compression function calls. At the same time, you can think about this as first computing a pseudorandom IV from K which is then used to hash M.