public override byte [] EncryptValue(byte [] key) { //http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html byte[] bs1 = _tdcsp.Key; SHA1CryptoServiceProvider sha1Csp = new SHA1CryptoServiceProvider(); byte[] bs2 = sha1Csp.ComputeHash(key); RNGCryptoServiceProvider rNGCryptoServiceProvider = new RNGCryptoServiceProvider(); byte[] bs3 = new byte[8]; rNGCryptoServiceProvider.GetBytes(bs3); byte[] bs4 = new byte[(int)key.Length + 8]; _tdcsp.IV = bs3; Buffer.BlockCopy(key, 0, bs4, 0, (int)key.Length); Buffer.BlockCopy(bs2, 0, bs4, (int)key.Length, 8); TripleDesNoPadding tdnp1 = new TripleDesNoPadding(_tdcsp); byte [] bs5 = tdnp1.Encrypt(bs4); byte[] bs6 = new byte[(int)bs3.Length + (int)bs5.Length]; Buffer.BlockCopy(bs3, 0, bs6, 0, (int)bs3.Length); Buffer.BlockCopy(bs5, 0, bs6, (int)bs3.Length, (int)bs5.Length); Array.Reverse(bs6, 0, bs6.Length); _tdcsp.Key = bs1; _tdcsp.IV = kwIv; TripleDesNoPadding tdnp2 = new TripleDesNoPadding(_tdcsp); byte [] cipher = tdnp2.Encrypt(bs6); return(cipher); }