有没有办法通过使用一些技巧(不安全代码等)以某种方式提高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;
}
这个功能可以改进并以某种方式加速吗?
答案 0 :(得分:1)
当且仅当两个数组的对齐方式相同时,使用64位XOR而不是8位XOR可以更快地运行。
即使没有对齐,展开循环也会减少循环终止条件和分支的开销。
绝对摆脱%
运营商。由于您一次只能向前移动一个元素,因此可以通过单个减法来实现环绕。
通常情况下,优化编译器应该为您做这些事情,但JIT可能不像优化那样聪明,例如,成熟的C ++优化器。