Exemplo n.º 1
0
        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);
        }