Org.BouncyCastle.Crypto.Engines.SkipjackEngine.EncryptBlock C# (CSharp) Метод

EncryptBlock() публичный Метод

public EncryptBlock ( byte input, int inOff, byte outBytes, int outOff ) : int
input byte
inOff int
outBytes byte
outOff int
Результат int
        public int EncryptBlock(
            byte[]      input,
            int         inOff,
            byte[]      outBytes,
            int         outOff)
        {
            int w1 = (input[inOff + 0] << 8) + (input[inOff + 1] & 0xff);
            int w2 = (input[inOff + 2] << 8) + (input[inOff + 3] & 0xff);
            int w3 = (input[inOff + 4] << 8) + (input[inOff + 5] & 0xff);
            int w4 = (input[inOff + 6] << 8) + (input[inOff + 7] & 0xff);

            int k = 0;

            for (int t = 0; t < 2; t++)
            {
                for(int i = 0; i < 8; i++)
                {
                    int tmp = w4;
                    w4 = w3;
                    w3 = w2;
                    w2 = G(k, w1);
                    w1 = w2 ^ tmp ^ (k + 1);
                    k++;
                }

                for(int i = 0; i < 8; i++)
                {
                    int tmp = w4;
                    w4 = w3;
                    w3 = w1 ^ w2 ^ (k + 1);
                    w2 = G(k, w1);
                    w1 = tmp;
                    k++;
                }
            }

            outBytes[outOff + 0] = (byte)((w1 >> 8));
            outBytes[outOff + 1] = (byte)(w1);
            outBytes[outOff + 2] = (byte)((w2 >> 8));
            outBytes[outOff + 3] = (byte)(w2);
            outBytes[outOff + 4] = (byte)((w3 >> 8));
            outBytes[outOff + 5] = (byte)(w3);
            outBytes[outOff + 6] = (byte)((w4 >> 8));
            outBytes[outOff + 7] = (byte)(w4);

            return BLOCK_SIZE;
        }