public static string EncryptStringWith3DES(string data, string key, string iv) { UnicodeEncoding unicode = new UnicodeEncoding(); Byte[] Bytes = unicode.GetBytes(data); MemoryStream mem = new MemoryStream(100); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); Byte[] KeyBytes = unicode.GetBytes(key); Byte[] tmpBytes = new Byte[16]; Array.Copy(KeyBytes, tmpBytes, KeyBytes.Length < 16 ? KeyBytes.Length : 16); KeyBytes = tmpBytes; if (tdes.ValidKeySize(KeyBytes.Length * 8)) { System.Diagnostics.Debug.WriteLine("Key size valid"); } if (TripleDESCryptoServiceProvider.IsWeakKey(KeyBytes)) { System.Diagnostics.Debug.WriteLine("Key weak"); } CryptoStream CrStream = new CryptoStream(mem, tdes.CreateEncryptor(KeyBytes, unicode.GetBytes(iv)), CryptoStreamMode.Write); for (int i = 0; i < Bytes.Length; i++) { CrStream.WriteByte(Bytes[i]); } CrStream.FlushFinalBlock(); string result = Convert.ToBase64String(mem.GetBuffer(), 0, (int)mem.Length); CrStream.Dispose(); return(result); }