Proper encryption can be difficult to implement correctly. Like many security controls, do not be hesitant to ask for help from an expert. It is not enough to simply use a popular routine or library, you really need to take the time to understand why certain approaches work well and others do not.
Use of encryption and hashing algorithms should be abstracted in a way that allows for easier upgrading in the future as newer/stronger algorithms are introduced. At the time of this writing the following providers are generally considered the best options within .NET.
You should carefully consider where cryptographic keys are stored, and how they are maintained for your application. For example, if using asymmetric encryption ensure that only the public key is available to public clients. Keys should be stored as configuration settings rather than hard-coded as constants. These configuration settings can then be further encrypted (see http://msdn.microsoft.com/en-us/library/vstudio/zhhddkxy(v=vs.100).aspx).
Whenever possible try to use unique keys per installation, or even more granular such as per customer or per user. This will limit exposure if a key is ever compromised. Also, consider how keys are regenerated/renewed to ensure this can be done easily or even automatically.