(v0, v1, v2, v3)
| 11 | return n >> (64 - b) | (n & ((1 << (64 - b)) - 1)) << b |
| 12 | |
| 13 | def siphash_round(v0, v1, v2, v3): |
| 14 | v0 = (v0 + v1) & ((1 << 64) - 1) |
| 15 | v1 = rotl64(v1, 13) |
| 16 | v1 ^= v0 |
| 17 | v0 = rotl64(v0, 32) |
| 18 | v2 = (v2 + v3) & ((1 << 64) - 1) |
| 19 | v3 = rotl64(v3, 16) |
| 20 | v3 ^= v2 |
| 21 | v0 = (v0 + v3) & ((1 << 64) - 1) |
| 22 | v3 = rotl64(v3, 21) |
| 23 | v3 ^= v0 |
| 24 | v2 = (v2 + v1) & ((1 << 64) - 1) |
| 25 | v1 = rotl64(v1, 17) |
| 26 | v1 ^= v2 |
| 27 | v2 = rotl64(v2, 32) |
| 28 | return (v0, v1, v2, v3) |
| 29 | |
| 30 | def siphash256(k0, k1, h): |
| 31 | n0 = h & ((1 << 64) - 1) |