Quick note, in cryptography services; .NET framework provides with the ability to securely transmit sensitive data. It implements a streams-based encryption layer, which allows data streams to be routed through encryption objects to produce encrypted output streams.
It supports the following symmetric(use the same key for encrypt/decryption) algorithms:
DES, 3DES, RC2, Rijndael/AES.
Following asymmetric(two keys, one for encryption and one for decryption) algorithms, called public and private keys:
Following are the hashing algos supported by .NET:
hashing algorithms; MD5(now getting obsolete), SHA1, SHA256, SHA384, SHA512, along with the support of X.509 certificates.
Also, .NET's SecureString is worth looking into.