127 H[0] = 0x8C3D37C819544DA2ull;
128 H[1] = 0x73E1996689DCD4D6ull;
129 H[2] = 0x1DFAB7AE32FF9C82ull;
130 H[3] = 0x679DD514582F9FCFull;
131 H[4] = 0x0F6D2B697BD44DA8ull;
132 H[5] = 0x77E36F7304C48942ull;
133 H[6] = 0x3F9D85A86A1D36C8ull;
134 H[7] = 0x1112E6AD91D692A1ull;
137 H[0] = 0x22312194FC2BF72Cull;
138 H[1] = 0x9F555FA3C84C64C2ull;
139 H[2] = 0x2393B86B6F53B151ull;
140 H[3] = 0x963877195940EABDull;
141 H[4] = 0x96283EE2A88EFFE3ull;
142 H[5] = 0xBE5E1E2553863992ull;
143 H[6] = 0x2B0199FC2C85B8AAull;
144 H[7] = 0x0EB72DDC81C52CA2ull;
147 H[0] = 0xcbbb9d5dc1059ed8ull;
148 H[1] = 0x629a292a367cd507ull;
149 H[2] = 0x9159015a3070dd17ull;
150 H[3] = 0x152fecd8f70e5939ull;
151 H[4] = 0x67332667ffc00b31ull;
152 H[5] = 0x8eb44a8768581511ull;
153 H[6] = 0xdb0c2e0d64f98fa7ull;
154 H[7] = 0x47b5481dbefa4fa4ull;
157 H[0] = 0x6a09e667f3bcc908ull;
158 H[1] = 0xbb67ae8584caa73bull;
159 H[2] = 0x3c6ef372fe94f82bull;
160 H[3] = 0xa54ff53a5f1d36f1ull;
161 H[4] = 0x510e527fade682d1ull;
162 H[5] = 0x9b05688c2b3e6c1full;
163 H[6] = 0x1f83d9abfb41bd6bull;
164 H[7] = 0x5be0cd19137e2179ull;
170 for (
int i = 0; i < 8; i++)
171 H[i] ^= 0xa5a5a5a5a5a5a5a5ull;
172 std::string tmp =
"SHA-512/" + std::to_string(hs);
174 update(
reinterpret_cast<unsigned char*
>(&tmp[0]), tmp.length());
175 unsigned char buf[512 / 8];
177 for (
int i = 0; i < 8; i++)
189 inline void final(
unsigned char*
hash)
193 if (pos > N / 4 -
sizeof(T) * 2) {
195 memset(&m[pos], 0, N / 4 - pos);
196 transform(m.data(), 1);
199 memset(&m[pos], 0, N / 4 - pos);
201 memcpy(&m[N / 4 - 8], &mlen, 64 / 8);
202 transform(m.data(), 1);
203 for (
int i = 0; i < 8; i++)
205 memcpy(
hash, &H[0], hs/8);