Org.BouncyCastle.Crypto.Engines.HC128Engine.F1 C# (CSharp) Метод

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

private static F1 ( uint x ) : uint
x uint
Результат uint
		private static uint F1(uint x)
		{
			return RotateRight(x, 7) ^ RotateRight(x, 18) ^ (x >> 3);
		}

Usage Example

Пример #1
0
        private void Init()
        {
            if (this.key.Length != 16)
            {
                throw new ArgumentException("The key must be 128 bits long");
            }
            this.cnt = 0u;
            uint[] array = new uint[1280];
            for (int i = 0; i < 16; i++)
            {
                array[i >> 2] |= (uint)((uint)this.key[i] << 8 * (i & 3));
            }
            Array.Copy(array, 0, array, 4, 4);
            int num = 0;

            while (num < this.iv.Length && num < 16)
            {
                array[(num >> 2) + 8] |= (uint)((uint)this.iv[num] << 8 * (num & 3));
                num++;
            }
            Array.Copy(array, 8, array, 12, 4);
            for (uint num2 = 16u; num2 < 1280u; num2 += 1u)
            {
                array[(int)((UIntPtr)num2)] = HC128Engine.F2(array[(int)((UIntPtr)(num2 - 2u))]) + array[(int)((UIntPtr)(num2 - 7u))] + HC128Engine.F1(array[(int)((UIntPtr)(num2 - 15u))]) + array[(int)((UIntPtr)(num2 - 16u))] + num2;
            }
            Array.Copy(array, 256, this.p, 0, 512);
            Array.Copy(array, 768, this.q, 0, 512);
            for (int j = 0; j < 512; j++)
            {
                this.p[j] = this.Step();
            }
            for (int k = 0; k < 512; k++)
            {
                this.q[k] = this.Step();
            }
            this.cnt = 0u;
        }