I've wondered for some time how some software hides secret keys in such a way that they can't be trivially discovered. Just a few examples:

* DVD Player Software hides CSS keys
* Software with serial numbers/registration codes hides keys/hashes used to validate the serial numbers

Obviously, these programs do something more than just have the key in a byte[], as that would make it easy to steal their keys and generate your own serial numbers, etc.

What sorts of strategies are used to hide these keys so that they can't be found easily?