Exemplo n.º 1
0
        void getEncription(ByteIO byteIO)
        {
            int passLength = getPasswordLength(byteIO.Length);

            var pass = getPassword(passLength);

            {
                int passIndex = 0;

                for (int i = 0; i < byteIO.Length; i++)
                {
                    if (passIndex >= pass.Length)
                    {
                        passIndex = 0;
                    }

                    var bt = byteIO[i];

                    unchecked
                    {
                        bt = encryption(bt, pass[passIndex], passIndex);
                    }

                    byteIO[i] = bt;

                    passIndex++;
                }
            }

            int passLengthPosition = createPassLengthPosition(passLength + sizeof(int) + byteIO.Length);

            byteIO.Add(pass.Length, passLengthPosition);

            byteIO.AddOnlyBytes(pass, byteIO.Length);
        }
Exemplo n.º 2
0
        public override byte[] Do()
        {
            var byteIO = new ByteIO(_byteBuffer);

            while (getDecryption(byteIO))
            {
            }

            return(byteIO.ToByteArray());
        }
Exemplo n.º 3
0
        public override byte[] Do()
        {
            var byteIO = new ByteIO(_byteBuffer);

            int nullPosition = createPassLengthPosition(byteIO.Length + sizeof(int));

            byteIO.Add(0, nullPosition);

            for (int i = 0; i < _levelCount; i++)
            {
                getEncription(byteIO);
            }

            return(byteIO.ToByteArray());
        }
Exemplo n.º 4
0
        bool getDecryption(ByteIO byteIO)
        {
            var passLengthPosition = createPassLengthPosition(byteIO.Length);

            var passLength = byteIO.GetInt(ref passLengthPosition);

            passLengthPosition -= sizeof(int);

            byteIO.RemoveBytes(passLengthPosition, sizeof(int));

            if (passLength == 0)
            {
                return(false);
            }
            else
            {
                var password = getPassword(byteIO, passLength);

                byteIO.Length -= password.Length;

                int passIndex = 0;

                for (int i = 0; i < byteIO.Length; i++)
                {
                    if (passIndex >= password.Length)
                    {
                        passIndex = 0;
                    }

                    var bt = byteIO[i];

                    unchecked
                    {
                        bt = decryption(bt, password[passIndex], passIndex);
                    }

                    byteIO[i] = bt;

                    passIndex++;
                }

                return(true);
            }
        }
Exemplo n.º 5
0
        static byte[] getPassword(ByteIO byteIO, int passLength)
        {
            int passPosition = byteIO.Length - passLength;

            return(byteIO.GetBytes(ref passPosition, passLength));
        }