import java.util.Formatter; public class PasswordCrackerThread implements Runnable { public final long rangeStart; public final long rangeEnd; public final Synchronizer sync; public PasswordCrackerThread(Synchronizer s, long start, long end) { sync = s; rangeStart = start; rangeEnd = end; } public void run() { for (long i = rangeStart; i <= rangeEnd; i++) { String guess = new Formatter().format("%8d", i).toString(); String digest = SHA.encrypt(guess); if (digest.equals(sync.targetHash)) { synchronized (sync) { sync.setSolution(i); break; } } } } }