【发布时间】:2016-09-17 10:52:41
【问题描述】:
我正在尝试用 C++ 编写 SHA-1 的实现。但由于某种原因,我无法让它工作。两个值不会正确相加。
我正在使用this 链接检查带有输入test 的SHA-1 的步骤
在函数的第一轮(对于单词 0),我有以下代码示例:
#define LEFTROTATE(x, c) (((x) << (c)) | ((x) >> (32 - (c))))
a = 0xefcdab89;
b = 0x98badcfe;
c = 0x10325476;
d = 0xc3d2e1f0;
f = (b & c) | (d & (~b));
cout << LEFTROTATE(a, 5); // equal to 3903086636 (11101000101001000110000000101100)
cout << f; // equal to 2562383102 (10011000101110101101110011111110)
我希望这两个值相加得到LEFTROTATE(a, 5) + f,但我得到以下信息:
cout << LEFTROTATE(a, 5) + f; // equal to 2170502442 (10000001010111110011110100101010)
我希望输出是6465469738 (110000001010111110011110100101010),因为3903086636 + 2562383102 = 6465469738。由于某种原因价值下降,我不知道为什么。
【问题讨论】: