Org.BouncyCastle.Crypto.Engines.Cast5Engine.CAST_Encipher C# (CSharp) Метод

CAST_Encipher() приватный Метод

private CAST_Encipher ( uint L0, uint R0, uint result ) : void
L0 uint
R0 uint
result uint
Результат void
        internal void CAST_Encipher(uint L0, uint R0, uint[] result)
        {
            uint Lp = L0;        // the previous value, equiv to L[i-1]
            uint Rp = R0;        // equivalent to R[i-1]

            /*
            * numbering consistent with paper to make
            * checking and validating easier
            */
            uint Li = L0, Ri = R0;

            for (int i = 1; i<=_rounds ; i++)
            {
                Lp = Li;
                Rp = Ri;

                Li = Rp;
                switch (i)
                {
                    case  1:
                    case  4:
                    case  7:
                    case 10:
                    case 13:
                    case 16:
                        Ri = Lp ^ F1(Rp, _Km[i], _Kr[i]);
                        break;
                    case  2:
                    case  5:
                    case  8:
                    case 11:
                    case 14:
                        Ri = Lp ^ F2(Rp, _Km[i], _Kr[i]);
                        break;
                    case  3:
                    case  6:
                    case  9:
                    case 12:
                    case 15:
                        Ri = Lp ^ F3(Rp, _Km[i], _Kr[i]);
                        break;
                }
            }

            result[0] = Ri;
            result[1] = Li;

            return;
        }