6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/page_rankr/ranks/google/checksum.rb', line 6
def generate(site)
bytes = byte_array('info:' + site)
length = bytes.length
a = b = 0x9E3779B9
c = 0xE6359A60
k, len = 0, length
while(len >= 12)
a = m(a + bytes[k + 0] + (bytes[k + 1] << 8) + (bytes[k + 2] << 16) + (bytes[k + 3] << 24))
b = m(b + bytes[k + 4] + (bytes[k + 5] << 8) + (bytes[k + 6] << 16) + (bytes[k + 7] << 24))
c = m(c + bytes[k + 8] + (bytes[k + 9] << 8) + (bytes[k + 10] << 16) + (bytes[k + 11] << 24))
a, b, c = mix(a, b, c)
k += 12
len -= 12
end
c = c + length
c = mix(*toss(a, b, c, bytes, len, k))[2]
"6" + c.to_s
end
|