Org.BouncyCastle.Crypto.Digests.LongDigest.Sum1 C# (CSharp) Method

Sum1() private static method

private static Sum1 ( ulong x ) : ulong
x ulong
return ulong
		private static ulong Sum1(ulong x)
        {
	        return ((x << 50) | (x >> 14)) ^ ((x << 46) | (x >> 18)) ^ ((x << 23) | (x >> 41));
        }

Usage Example

Example #1
0
        internal void ProcessBlock()
        {
            this.AdjustByteCounts();
            for (int i = 16; i <= 79; i++)
            {
                this.W[i] = LongDigest.Sigma1(this.W[i - 2]) + this.W[i - 7] + LongDigest.Sigma0(this.W[i - 15]) + this.W[i - 16];
            }
            ulong num  = this.H1;
            ulong num2 = this.H2;
            ulong num3 = this.H3;
            ulong num4 = this.H4;
            ulong num5 = this.H5;
            ulong num6 = this.H6;
            ulong num7 = this.H7;
            ulong num8 = this.H8;
            int   num9 = 0;

            for (int j = 0; j < 10; j++)
            {
                num8 += LongDigest.Sum1(num5) + LongDigest.Ch(num5, num6, num7) + LongDigest.K[num9] + this.W[num9++];
                num4 += num8;
                num8 += LongDigest.Sum0(num) + LongDigest.Maj(num, num2, num3);
                num7 += LongDigest.Sum1(num4) + LongDigest.Ch(num4, num5, num6) + LongDigest.K[num9] + this.W[num9++];
                num3 += num7;
                num7 += LongDigest.Sum0(num8) + LongDigest.Maj(num8, num, num2);
                num6 += LongDigest.Sum1(num3) + LongDigest.Ch(num3, num4, num5) + LongDigest.K[num9] + this.W[num9++];
                num2 += num6;
                num6 += LongDigest.Sum0(num7) + LongDigest.Maj(num7, num8, num);
                num5 += LongDigest.Sum1(num2) + LongDigest.Ch(num2, num3, num4) + LongDigest.K[num9] + this.W[num9++];
                num  += num5;
                num5 += LongDigest.Sum0(num6) + LongDigest.Maj(num6, num7, num8);
                num4 += LongDigest.Sum1(num) + LongDigest.Ch(num, num2, num3) + LongDigest.K[num9] + this.W[num9++];
                num8 += num4;
                num4 += LongDigest.Sum0(num5) + LongDigest.Maj(num5, num6, num7);
                num3 += LongDigest.Sum1(num8) + LongDigest.Ch(num8, num, num2) + LongDigest.K[num9] + this.W[num9++];
                num7 += num3;
                num3 += LongDigest.Sum0(num4) + LongDigest.Maj(num4, num5, num6);
                num2 += LongDigest.Sum1(num7) + LongDigest.Ch(num7, num8, num) + LongDigest.K[num9] + this.W[num9++];
                num6 += num2;
                num2 += LongDigest.Sum0(num3) + LongDigest.Maj(num3, num4, num5);
                num  += LongDigest.Sum1(num6) + LongDigest.Ch(num6, num7, num8) + LongDigest.K[num9] + this.W[num9++];
                num5 += num;
                num  += LongDigest.Sum0(num2) + LongDigest.Maj(num2, num3, num4);
            }
            this.H1  += num;
            this.H2  += num2;
            this.H3  += num3;
            this.H4  += num4;
            this.H5  += num5;
            this.H6  += num6;
            this.H7  += num7;
            this.H8  += num8;
            this.wOff = 0;
            Array.Clear(this.W, 0, 16);
        }