Exemplo n.º 1
0
        private static void MD5Update(MD5Managed.MD5_CTX context, byte[] input, uint inputIndex, uint inputLen)
        {
            uint num = context.count[0] >> 3 & 63u;

            if ((context.count[0] += inputLen << 3) < inputLen << 3)
            {
                context.count[1] += 1u;
            }
            context.count[1] += inputLen >> 29;
            uint num2 = 64u - num;
            uint num3 = 0u;

            if (inputLen >= num2)
            {
                Buffer.BlockCopy(input, (int)inputIndex, context.buffer, (int)num, (int)num2);
                MD5Managed.MD5Transform(context.state, context.buffer, 0u);
                num3 = num2;
                while (num3 + 63u < inputLen)
                {
                    MD5Managed.MD5Transform(context.state, input, num3);
                    num3 += 64u;
                }
                num = 0u;
            }
            Buffer.BlockCopy(input, (int)(inputIndex + num3), context.buffer, (int)num, (int)(inputLen - num3));
        }
Exemplo n.º 2
0
 private static void MD5Init(MD5Managed.MD5_CTX context)
 {
     context.count[0] = (context.count[1] = 0u);
     context.state[0] = 1732584193u;
     context.state[1] = 4023233417u;
     context.state[2] = 2562383102u;
     context.state[3] = 271733878u;
 }
Exemplo n.º 3
0
        private static void MD5Final(byte[] digest, MD5Managed.MD5_CTX context)
        {
            byte[] array = new byte[8];
            MD5Managed.Encode(array, context.count, 8u);
            uint num      = context.count[0] >> 3 & 63u;
            uint inputLen = (num < 56u) ? (56u - num) : (120u - num);

            MD5Managed.MD5Update(context, MD5Managed.PADDING, 0u, inputLen);
            MD5Managed.MD5Update(context, array, 0u, 8u);
            MD5Managed.Encode(digest, context.state, 16u);
            context.Clear();
        }