CSharpRTMP.Core.Protocols.Rtmfp.AESEngine.Encrypt C# (CSharp) Method

Encrypt() public method

public Encrypt ( BufferWithOffset inArray ) : void
inArray CSharpRTMP.Common.BufferWithOffset
return void
        public void Encrypt(BufferWithOffset inArray)
        {
            int len = inArray.Length;
            //byte[] outArray = new byte[len%16 == 0 ? len : (len/16 + 1)*16];
            int turn = 0;
            int start = 0, end;
            Array.Clear(_iv,0,_iv.Length);
            while (len >= AES_BLOCK_SIZE)
            {
                start = AES_BLOCK_SIZE*turn;
                //end = AES_BLOCK_SIZE*turn + 15;
                for (int n = 0; n < AES_BLOCK_SIZE; n++)
                {
                    //outArray[start + n] = (byte)(inArray[start + n] ^ _iv[n]);
                    inArray[start + n] ^= _iv[n];
                }

                Encrypt16Byte(inArray.Buffer, start + inArray.Offset, _key);
                Buffer.BlockCopy(inArray.Buffer, start + inArray.Offset, _iv, 0, AES_BLOCK_SIZE);
                //for (int i = 0; i < AES_BLOCK_SIZE; i++)
                //    _iv[i] = outArray[start + i];
                len -= AES_BLOCK_SIZE;
                turn++;
            }
            if (len > 0)
            {
                start = AES_BLOCK_SIZE*turn;
                for (int n = 0; n < len; ++n) inArray[start + n] ^= _iv[n];
                    //outArray[start + n] = (byte)(inArray[start + n] ^ _iv[n]);
                for (int n = len; n < AES_BLOCK_SIZE; ++n)
                    inArray[start + n] = _iv[n];
                    //outArray[start + n] = _iv[n];
                Encrypt16Byte( inArray.Buffer, start + inArray.Offset, _key);
                /////////////////
                //var myTemp = Compute(outArray);
                /////////////////
                //for (int i = 0; i < AES_BLOCK_SIZE; i++)
                //    iv[i] = outArray[start + i]; //==? 是 start + 1 还是 start + i
            }
            //memcpy(ivec,iv,AES_BLOCK_SIZE);
            //Buffer.BlockCopy(outArray,0,inArray.Buffer,inArray.Offset,outArray.Length);
        }