This is bijective, efficiently invertible, and the runtime gets to hold the randomly generated keys (multipliers) for security. It fits our threat model, where the adversary cannot see the seed or observe the hash output, and only has a limited attack budget per request.