README: Pollard Rho DLP Solver Project by: Katherine Miller katherinemiller@umbc.edu ----------------------------------------------------------- This program uses the Pollard Rho algorithm for Discrete Log Problems to solve a given discrete log problem. The interface involves large text fields for alpha, x, beta, and N, organized in a way that reads alpha^x = beta mod N. After inputting the parameters, click "Solve!" to run the algorithm. The program will run the algorithm, terminating when it finds slow a, fast A, slow b, and fast B so that alpha^a*beta^b = alpha^A*beta^B mod N. It then looks for a solution to the problem (B-b)x = (a-A)mod phi(N), the value of x we are looking for. Often, especially for very large numbers, this algorithm terminates on values of (B-b) which are not relatively prime to phi(N). While for small problems there may only be one or two answers to the problem, larger problems have increasingly more answers. In order to make up for this problem, I have added functionality that allows the user to check the answer given by the algorithm which does have the possibility of being wrong. In addition, when the user clicks solve, the program checks to see if the text field for x is filled out. For new problems, it should not be. But in order to allow for other solutions of the old problem to be generated (if they exist), my program begins looking for solutions after the one that is in the "x" text area. Essentially, this allows a user to input an alpha, beta, and N, and click solve repeatedly to generate all the possible solutions. EXAMPLE:I pulled this example problem off wikipedia. In the group of the integers mod 1019, 2 is a generator and 2^10 is equal to 5. Inputting alpha=2, beta=5, and N=1019 and clicking solve produces the first answer, 10. If the user is curious, he or she could click solve again and get 519. Because these are the only two solutions the algorithm generates, clicking solve repeatedly will loop through these two answers. Then, the user can click "check answer" to check if any of the solutions returned are correct.