我正在尝试在C++中编写SHA-1的实现。但由于某种原因,我无法让它工作。两个值不会正确相加。二进制值不能正确相加
我使用this链路来检查SHA-1与输入test
以下步骤在第一轮的函数(对于字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
。由于某种原因该值下降,我不知道为什么。
所以我的代码表现得应该如此? – Cartman123
是的,这个结果没有问题。 – harold