I don't know .net so I don't understand the code in details but as far as I can see there are at least the following problems:
- You are not using authenticated encryption. You should use a MAC like HMAC to detect manipulations of the ciphertext. Otherwise, an attacker could manipulate the ciphertext so that it is decrypted to a plausible plaintext.
- For DES there exists weak keys. If you're unlucky your derived key is a weak one but the probability to get a weak key usually is negligible. Furthermore, you should use AES instead of 3DES.
- I can't see which cipher mode you use. ECB is not recommended. Today, CBC or CTR are recommended by most cryptographers.
The way you should do encryption is as follows:
- select a key at random or derive a key from a password
- use AES-256 in CBC mode with PKCS#5 padding
- select an IV at random
- encrypt the data
- compute an HMAC over the IV + ciphertext
- send IV + ciphertext + HMAC
When receiving the ciphertext:
- check that the HMAC of IV + ciphertext is correct
- decrypt the ciphertext