快速异或算法

Fast XOR Algorithm

有没有办法通过使用一些技巧(不安全代码等)以某种方式提高异或加密算法的速度?

我目前使用的算法如下:

public byte[] XOR(byte[] strng, byte[] key)
{
    int string_len = strng.Length;
    int key_length = key.Length;
    int i, position;

    for (i = 0; i < string_len; i++)
    {
        position = i % key_length;
        strng[i] = Convert.ToByte(strng[i] ^ key[position]);
    }
    return strng;
}

这个功能是否可以改进并以某种方式加快速度?

当且仅当两个数组对齐相同时,使用 64 位 XOR 而不是 8 位 XOR 可以更快。

即使没有对齐,展开循环也会减少循环终止条件和分支的开销。

并且绝对摆脱 % 运算符。由于一次只能向前移动一个元素,因此可以通过一次减法实现回绕。

通常情况下,优化编译器应该为您做这些事情,但 JIT 在优化方面可能不像成熟的 C++ 优化器那样聪明。