一切都在标题中。我无法找到有关这个具体细节的任何信息,当我去检查实现时(我将在这里发布,你可以在标题md32_common.h中找到它),我无法说出来。 ..
这是HASH_UPDATE函数,它由每个散列函数更新函数调用(即MD5_Update(...))
//required values: distance between two adjacent rectangles, sizes of rectangles
sort(rectangles) // from top-left to bottom-right
foreach (rect in rectangles)
if (distance between two adjacent rectangles changed)
get number of grown/shrunk rows/columns
foreach (rect2 in rectangles below/to the right of rect)
move rect2 according to the grown/shrunk rows
if collision is solved after vertical movement
continue
else
move horizontally
答案 0 :(得分:2)
虽然像MD5这样的散列函数通常在比特流上运行,但软件实现通常在字节上运行以避免比特移位的速度损失(并且因为数据通常以字节为单位或在任何情况下以更大的单位处理)。在您发布的代码中,行
l = (c->Nl + (((HASH_LONG) len) << 3)) & 0xffffffffUL;
将len
参数乘以8(左移3次)将字节数转换为位数,所以我认为可以说这段代码在内部使用了比特,但是希望传递给字节流。