(define (find-discrete-log y g p) (define (internal-x-iter x) (cond ((> x (- p 2)) false) ((= (modulo y p) (expmod g x p)) x) (else (internal-x-iter (+ x 1))))) (internal-x-iter 2))
Now let's crack a 4-digit code and see if we can decrypt some sample messages:
(define cracked-key (crack-public-key pk-ex-5)) ;Value: cracked-key cracked-key ;Value: (19079 362 107 6843) (decrypt (encrypt "This is a test!!" (key-system->public-key cracked-key)) cracked-key) ;Value: "This is a test!!"