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

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

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

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

            for (int i = _rounds; i > 0; 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;
        }