If I may be just a bit pedantic...
Encoding != Encrypting != Hash !!!
Encoding= replacing characters in a deterministic manner; shifting a letter to right is encoding, so is representing a string in binary form. This is security through obscurity. (IOW, no security at all!)
Encrypting= Using a key to generate semi-random message; basically a more complex encoding, but is very difficult to decode without the key (which isn't true for encoding).
Hashing= one-way encoding into a digest that cannot be easily reversed, so a hash will not tell you what the original message was, neither it can be ever decoded. You can only hash the identical copy and compare whether it was the same hash and thus conclude that it is in fact identical, but with just hash, you're SOL.
Most important of all: There is no such thing as a perfect security. Given infinite time and/or infinite computational power, anything can be broken, even hashes (see: rainbow tables). Thus, you have to decide how much complicated you want to get before it is sufficiently infeasible for any information valuable enough to be broken in a reasonable frame of time (e.g. if you have a method that guarantees that it will take 100 year of 24/7 computing to have a good probability of breaking, and that information is long past worthless, you can say it succeeds for your purpose. Or you could just stop with 10 year and leave at that.)
Like I said, you will have to have a good understanding of cryptographic operations to effectively implement anything even remotely secure. Or you could just use what Microsoft gave you with ULS and not worry about having to learn everything to know about cryptography.