@@ -80,67 +80,3 @@ template std::string base_blob<256>::GetHex() const;
8080template std::string base_blob<256 >::ToString() const ;
8181template void base_blob<256 >::SetHex(const char *);
8282template void base_blob<256 >::SetHex(const std::string&);
83-
84- static void inline HashMix (uint32_t & a, uint32_t & b, uint32_t & c)
85- {
86- // Taken from lookup3, by Bob Jenkins.
87- a -= c;
88- a ^= ((c << 4 ) | (c >> 28 ));
89- c += b;
90- b -= a;
91- b ^= ((a << 6 ) | (a >> 26 ));
92- a += c;
93- c -= b;
94- c ^= ((b << 8 ) | (b >> 24 ));
95- b += a;
96- a -= c;
97- a ^= ((c << 16 ) | (c >> 16 ));
98- c += b;
99- b -= a;
100- b ^= ((a << 19 ) | (a >> 13 ));
101- a += c;
102- c -= b;
103- c ^= ((b << 4 ) | (b >> 28 ));
104- b += a;
105- }
106-
107- static void inline HashFinal (uint32_t & a, uint32_t & b, uint32_t & c)
108- {
109- // Taken from lookup3, by Bob Jenkins.
110- c ^= b;
111- c -= ((b << 14 ) | (b >> 18 ));
112- a ^= c;
113- a -= ((c << 11 ) | (c >> 21 ));
114- b ^= a;
115- b -= ((a << 25 ) | (a >> 7 ));
116- c ^= b;
117- c -= ((b << 16 ) | (b >> 16 ));
118- a ^= c;
119- a -= ((c << 4 ) | (c >> 28 ));
120- b ^= a;
121- b -= ((a << 14 ) | (a >> 18 ));
122- c ^= b;
123- c -= ((b << 24 ) | (b >> 8 ));
124- }
125-
126- uint64_t uint256::GetHash (const uint256& salt) const
127- {
128- uint32_t a, b, c;
129- const uint32_t *pn = (const uint32_t *)data;
130- const uint32_t *salt_pn = (const uint32_t *)salt.data ;
131- a = b = c = 0xdeadbeef + WIDTH;
132-
133- a += pn[0 ] ^ salt_pn[0 ];
134- b += pn[1 ] ^ salt_pn[1 ];
135- c += pn[2 ] ^ salt_pn[2 ];
136- HashMix (a, b, c);
137- a += pn[3 ] ^ salt_pn[3 ];
138- b += pn[4 ] ^ salt_pn[4 ];
139- c += pn[5 ] ^ salt_pn[5 ];
140- HashMix (a, b, c);
141- a += pn[6 ] ^ salt_pn[6 ];
142- b += pn[7 ] ^ salt_pn[7 ];
143- HashFinal (a, b, c);
144-
145- return ((((uint64_t )b) << 32 ) | c);
146- }
0 commit comments