快速XOR算法

时间:2015-04-16 21:44:14

标签: c# algorithm xor unsafe crypt

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

我目前使用的算法如下:

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;
}

这个功能可以改进并以某种方式加速吗?

1 个答案:

答案 0 :(得分:1)

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

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

绝对摆脱%运营商。由于您一次只能向前移动一个元素,因此可以通过单个减法来实现环绕。

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