k1 = t1 * 2^shift + junk k2 = (t1 + diff) * 2^shift + junk k2 - k1 = diff (2^shift) bf: diff (2^shift) for bf in range(...): if R1 + G * bf * (2^shift) == R2: found -------------------------------- s1 (k1) = h1 - r1 x s2 (k1 + diff) = h2 - r2 x (h1 - s1 k1) / r1 = x (h2 - s2 k1 - s2 diff) / r2 = x (h1 - s1 k1) r2 = (h2 - s2 k1 - s2 diff) r1 r2 h1 - r2 s1 k1 = r1 h2 - r1 s2 k1 - r1 s2 diff r1 s2 k1 - r2 s1 k1 = r1 h2 - r1 s2 diff - r2 h1 k1 (r1 s2 - s1 r2) = r1 h2 - r1 s2 diff - r2 h1 k1 = (r1 h2 - r1 s2 diff - r2 h1) / (r1 s2 - s1 r2)