XOR'ing字节时性能下降

时间:2015-08-18 14:03:53

标签: c# bytearray xor

在XOR字节数组时,我遇到了一些不太令人满意的性能。

并不是说它非常糟糕,但我想知道是否有某种方法可以获得更好的表现。

我在考虑为每个xor使用更多的cpu注册表。但我不知道如何去做这件事。

这是我的职责,负责XOR'ing。

internal void TransformBlock(byte[] inputBuffer, long inputOffset, int inputCount,byte[] outputBuffer, int outputOffset, byte[] counter, int counterOffset, byte[] key)
    {
        using (var encryptor = Aes.CreateEncryptor(key, zeroIV))
        {
            int offs = 0;
            int blocks = inputCount + counterOffset > 16 ? ((inputCount + counterOffset + 16 - 1) / 16) : 1;
            var counterBuffer = new byte[16 * blocks];

            for (int i = 0; i < blocks; i++)
            {
                for (int j = 0; j < counter.Length; j++)
                {
                    counterBuffer[offs++] = counter[j];
                }
                // Increment counter by one
                for (var k = counter.Length - 1; k >= 0; k--)
                {
                    if (++counter[k] != 0)
                        break;
                }
            }
            var keyBytesBuffer = encryptor.TransformFinalBlock(counterBuffer, 0, counterBuffer.Length);
            for (var i = 0; i < inputCount; i++)
            {
                outputBuffer[outputOffset + i] = (byte)(inputBuffer[inputOffset + i] ^ keyBytesBuffer[i + counterOffset]);

            }
        }
    }

0 个答案:

没有答案