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