Closed. This question is opinion-based. It is not currently accepting answers. Learn more
想改进这个问题吗?更新问题,以便editing this post可以用事实和引用来回答
有没有办法通过使用一些技巧(不安全的代码或其他)来提高异或加密算法的速度?
我目前使用的算法如下:

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位异或而不是8位异或可以更快地进行。
即使没有对齐,展开循环也会减少循环终止条件和分支带来的开销。
一定要除掉%操作员。由于一次只能向前移动一个元素,因此可以通过一个减法实现环绕。
通常情况下,优化编译器应该为你做这些事情,但是JIT可能不如优化的智能,例如,一个成熟的C++优化器。

08-19 01:51