System.Security.Cryptography.SHA1Internal.InitialiseBuff C# (CSharp) Метод

InitialiseBuff() приватный статический Метод

private static InitialiseBuff ( uint buff, byte input, uint inputOffset ) : void
buff uint
input byte
inputOffset uint
Результат void
		private static void InitialiseBuff(uint[] buff, byte[] input, uint inputOffset)
		{
			buff[0] = (uint)((input[inputOffset + 0] << 24) | (input[inputOffset + 1] << 16) | (input[inputOffset + 2] << 8) | (input[inputOffset + 3]));
			buff[1] = (uint)((input[inputOffset + 4] << 24) | (input[inputOffset + 5] << 16) | (input[inputOffset + 6] << 8) | (input[inputOffset + 7]));
			buff[2] = (uint)((input[inputOffset + 8] << 24) | (input[inputOffset + 9] << 16) | (input[inputOffset + 10] << 8) | (input[inputOffset + 11]));
			buff[3] = (uint)((input[inputOffset + 12] << 24) | (input[inputOffset + 13] << 16) | (input[inputOffset + 14] << 8) | (input[inputOffset + 15]));
			buff[4] = (uint)((input[inputOffset + 16] << 24) | (input[inputOffset + 17] << 16) | (input[inputOffset + 18] << 8) | (input[inputOffset + 19]));
			buff[5] = (uint)((input[inputOffset + 20] << 24) | (input[inputOffset + 21] << 16) | (input[inputOffset + 22] << 8) | (input[inputOffset + 23]));
			buff[6] = (uint)((input[inputOffset + 24] << 24) | (input[inputOffset + 25] << 16) | (input[inputOffset + 26] << 8) | (input[inputOffset + 27]));
			buff[7] = (uint)((input[inputOffset + 28] << 24) | (input[inputOffset + 29] << 16) | (input[inputOffset + 30] << 8) | (input[inputOffset + 31]));
			buff[8] = (uint)((input[inputOffset + 32] << 24) | (input[inputOffset + 33] << 16) | (input[inputOffset + 34] << 8) | (input[inputOffset + 35]));
			buff[9] = (uint)((input[inputOffset + 36] << 24) | (input[inputOffset + 37] << 16) | (input[inputOffset + 38] << 8) | (input[inputOffset + 39]));
			buff[10] = (uint)((input[inputOffset + 40] << 24) | (input[inputOffset + 41] << 16) | (input[inputOffset + 42] << 8) | (input[inputOffset + 43]));
			buff[11] = (uint)((input[inputOffset + 44] << 24) | (input[inputOffset + 45] << 16) | (input[inputOffset + 46] << 8) | (input[inputOffset + 47]));
			buff[12] = (uint)((input[inputOffset + 48] << 24) | (input[inputOffset + 49] << 16) | (input[inputOffset + 50] << 8) | (input[inputOffset + 51]));
			buff[13] = (uint)((input[inputOffset + 52] << 24) | (input[inputOffset + 53] << 16) | (input[inputOffset + 54] << 8) | (input[inputOffset + 55]));
			buff[14] = (uint)((input[inputOffset + 56] << 24) | (input[inputOffset + 57] << 16) | (input[inputOffset + 58] << 8) | (input[inputOffset + 59]));
			buff[15] = (uint)((input[inputOffset + 60] << 24) | (input[inputOffset + 61] << 16) | (input[inputOffset + 62] << 8) | (input[inputOffset + 63]));
		}

Usage Example

Пример #1
0
        private void ProcessBlock(byte[] inputBuffer, uint inputOffset)
        {
            this.count += 64UL;
            uint[] h     = this._H;
            uint[] array = this.buff;
            SHA1Internal.InitialiseBuff(array, inputBuffer, inputOffset);
            SHA1Internal.FillBuff(array);
            uint num  = h[0];
            uint num2 = h[1];
            uint num3 = h[2];
            uint num4 = h[3];
            uint num5 = h[4];
            int  i;

            for (i = 0; i < 20; i += 5)
            {
                num5 += (num << 5 | num >> 27) + (((num3 ^ num4) & num2) ^ num4) + 1518500249u + array[i];
                num2  = (num2 << 30 | num2 >> 2);
                num4 += (num5 << 5 | num5 >> 27) + (((num2 ^ num3) & num) ^ num3) + 1518500249u + array[i + 1];
                num   = (num << 30 | num >> 2);
                num3 += (num4 << 5 | num4 >> 27) + (((num ^ num2) & num5) ^ num2) + 1518500249u + array[i + 2];
                num5  = (num5 << 30 | num5 >> 2);
                num2 += (num3 << 5 | num3 >> 27) + (((num5 ^ num) & num4) ^ num) + 1518500249u + array[i + 3];
                num4  = (num4 << 30 | num4 >> 2);
                num  += (num2 << 5 | num2 >> 27) + (((num4 ^ num5) & num3) ^ num5) + 1518500249u + array[i + 4];
                num3  = (num3 << 30 | num3 >> 2);
            }
            while (i < 40)
            {
                num5 += (num << 5 | num >> 27) + (num2 ^ num3 ^ num4) + 1859775393u + array[i];
                num2  = (num2 << 30 | num2 >> 2);
                num4 += (num5 << 5 | num5 >> 27) + (num ^ num2 ^ num3) + 1859775393u + array[i + 1];
                num   = (num << 30 | num >> 2);
                num3 += (num4 << 5 | num4 >> 27) + (num5 ^ num ^ num2) + 1859775393u + array[i + 2];
                num5  = (num5 << 30 | num5 >> 2);
                num2 += (num3 << 5 | num3 >> 27) + (num4 ^ num5 ^ num) + 1859775393u + array[i + 3];
                num4  = (num4 << 30 | num4 >> 2);
                num  += (num2 << 5 | num2 >> 27) + (num3 ^ num4 ^ num5) + 1859775393u + array[i + 4];
                num3  = (num3 << 30 | num3 >> 2);
                i    += 5;
            }
            while (i < 60)
            {
                num5 += (num << 5 | num >> 27) + ((num2 & num3) | (num2 & num4) | (num3 & num4)) + 2400959708u + array[i];
                num2  = (num2 << 30 | num2 >> 2);
                num4 += (num5 << 5 | num5 >> 27) + ((num & num2) | (num & num3) | (num2 & num3)) + 2400959708u + array[i + 1];
                num   = (num << 30 | num >> 2);
                num3 += (num4 << 5 | num4 >> 27) + ((num5 & num) | (num5 & num2) | (num & num2)) + 2400959708u + array[i + 2];
                num5  = (num5 << 30 | num5 >> 2);
                num2 += (num3 << 5 | num3 >> 27) + ((num4 & num5) | (num4 & num) | (num5 & num)) + 2400959708u + array[i + 3];
                num4  = (num4 << 30 | num4 >> 2);
                num  += (num2 << 5 | num2 >> 27) + ((num3 & num4) | (num3 & num5) | (num4 & num5)) + 2400959708u + array[i + 4];
                num3  = (num3 << 30 | num3 >> 2);
                i    += 5;
            }
            while (i < 80)
            {
                num5 += (num << 5 | num >> 27) + (num2 ^ num3 ^ num4) + 3395469782u + array[i];
                num2  = (num2 << 30 | num2 >> 2);
                num4 += (num5 << 5 | num5 >> 27) + (num ^ num2 ^ num3) + 3395469782u + array[i + 1];
                num   = (num << 30 | num >> 2);
                num3 += (num4 << 5 | num4 >> 27) + (num5 ^ num ^ num2) + 3395469782u + array[i + 2];
                num5  = (num5 << 30 | num5 >> 2);
                num2 += (num3 << 5 | num3 >> 27) + (num4 ^ num5 ^ num) + 3395469782u + array[i + 3];
                num4  = (num4 << 30 | num4 >> 2);
                num  += (num2 << 5 | num2 >> 27) + (num3 ^ num4 ^ num5) + 3395469782u + array[i + 4];
                num3  = (num3 << 30 | num3 >> 2);
                i    += 5;
            }
            h[0] += num;
            h[1] += num2;
            h[2] += num3;
            h[3] += num4;
            h[4] += num5;
        }