diegodfsd
9/26/2011 - 4:05 PM

Refactoring - 2

Refactoring - 2

        private static string Encode(string text)
        {
            byte[] bytes = StringConvertToBytes(text);

            using (MemoryStream stream = new MemoryStream())
            {
                Write(stream, Compute<CriptoProvider1>(bytes));
                Write(stream, Compute<CriptoProvider2>(bytes));

                return BytesConvertToString(stream.ToArray());
            }
        }

        private static void Write(MemoryStream stream, byte[] hash)
        {
            stream.WriteByte(0);
            stream.Write(hash, 0, hash.Length);
        }

        private static string BytesConvertToString(byte[] bytes)
        {
            return Convert.ToBase64String(bytes);
        }

        private static byte[] StringConvertToBytes(string text)
        {
            return Encoding.Unicode.GetBytes(text);
        }

        private static byte[] Compute<T>(byte[] bytes)
            where T : HashAlgorithm, new()
        {
            return (new T()).ComputeHash(bytes);
        }
            byte[] bytes = Encoding.Unicode.GetBytes(text);
            byte[] hash;

            MemoryStream stream = new MemoryStream();
            stream.WriteByte(0);

            var cripto1 = new CriptoProvider1();
            hash = cripto1.ComputeHash(bytes);

            stream.Write(hash, 0, hash.Length);
            stream.WriteByte(0);

            var cripto2 = new CriptoProvider2();
            hash = cripto2.ComputeHash(bytes);

            stream.Write(hash, 0, hash.Length);


            bytes = stream.ToArray();
            string result = Convert.ToBase64String(bytes);

            return result;