While this might be more suitable as a comment I feel the point is so important I decided to post it as an answer.
If you want a one-way function for actual cryptographic purposes, whatever they are, and it even crosses your mind to ask on a forum what one could be satisfying whatever constraints you have come up with, you want to stop what you are doing.
Any home-brewed cryptographic protocol, function, doo-hicky or algorithm, is almost certain to be bad. And here I'm using almost in the mathematical meaning i.e. given an infinite set, for all but finitely many.
If you have a problem that needs a cryptographic solution and you haven't spent the last 10 years doing cryptography, you want to find a well known, preferably widely used and supported, protocol, function, doo-hicky or algorithm and use that. Not only is it a lot less likely to be fatally flawed, but chances are when it is discovered to be flawed it will be published, you will find out about it and be able to react appropriately (patching, updating, migrating wvr.)
While people often realize this in case of algorithms and functions, possibly the most problematic situation is protocols. You just have to look around to notice that even some of the smartest people around have issues coming up with safe protocols so chances are anything one comes up with on their own will be so full of holes it will resemble a grate more then a sieve.