对于128MB字符串缓冲区,是否有任何校验和算法花费1%的sha1时间?

时间:2015-07-31 09:15:47

标签: c checksum digest

我想将128MB的修复大小缓冲区与C语言的校验和进行比较。我使用sha1得到一个20字节的摘要,在我的centos盒子里花了1700ms。 有什么算法可以满足我的要求,成本低于50毫秒?

2 个答案:

答案 0 :(得分:2)

只需做一个整数XOR求和:

int xorsum = 0;
for(int i=0; i< length; i++) xorsum ^= mem[i];

这里你的内存被认为是一个int数组。

对于更高的“精度”,您可以使用长度为2,3或更多整数的xor-sum进行相同的操作。

答案 1 :(得分:2)

假设你要求的是algorythm而不是库,因为后者不在主题......

您可以尝试使用循环冗余校验。没有解决加密问题,因此更容易计算。

您可以在Wikipedia找到有关http://www.lammertbies.nl的优秀C实现的参考资料,并使用在线CRC计算器来控制您的实施。