Org.BouncyCastle.Crypto.Engines.CamelliaEngine.rightRotate C# (CSharp) Метод

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

private static rightRotate ( uint x, int s ) : uint
x uint
s int
Результат uint
		private static uint rightRotate(uint x, int s)
		{
			return ((x >> s) + (x << (32 - s)));
		}

Usage Example

Пример #1
0
        private static void camelliaF2(uint[] s, uint[] skey, int keyoff)
        {
            uint num  = s[0] ^ skey[keyoff];
            uint num2 = CamelliaEngine.SBOX4_4404[(int)((byte)num)];

            num2 ^= CamelliaEngine.SBOX3_3033[(int)((byte)(num >> 8))];
            num2 ^= CamelliaEngine.SBOX2_0222[(int)((byte)(num >> 16))];
            num2 ^= CamelliaEngine.SBOX1_1110[(int)((byte)(num >> 24))];
            uint num3 = s[1] ^ skey[1 + keyoff];
            uint num4 = CamelliaEngine.SBOX1_1110[(int)((byte)num3)];

            num4 ^= CamelliaEngine.SBOX4_4404[(int)((byte)(num3 >> 8))];
            num4 ^= CamelliaEngine.SBOX3_3033[(int)((byte)(num3 >> 16))];
            num4 ^= CamelliaEngine.SBOX2_0222[(int)((byte)(num3 >> 24))];
            s[2] ^= (num2 ^ num4);
            s[3] ^= (num2 ^ num4 ^ CamelliaEngine.rightRotate(num2, 8));
            num   = (s[2] ^ skey[2 + keyoff]);
            num2  = CamelliaEngine.SBOX4_4404[(int)((byte)num)];
            num2 ^= CamelliaEngine.SBOX3_3033[(int)((byte)(num >> 8))];
            num2 ^= CamelliaEngine.SBOX2_0222[(int)((byte)(num >> 16))];
            num2 ^= CamelliaEngine.SBOX1_1110[(int)((byte)(num >> 24))];
            num3  = (s[3] ^ skey[3 + keyoff]);
            num4  = CamelliaEngine.SBOX1_1110[(int)((byte)num3)];
            num4 ^= CamelliaEngine.SBOX4_4404[(int)((byte)(num3 >> 8))];
            num4 ^= CamelliaEngine.SBOX3_3033[(int)((byte)(num3 >> 16))];
            num4 ^= CamelliaEngine.SBOX2_0222[(int)((byte)(num3 >> 24))];
            s[0] ^= (num2 ^ num4);
            s[1] ^= (num2 ^ num4 ^ CamelliaEngine.rightRotate(num2, 8));
        }