~edwargix/tallyard

00890fb7dfb9bb08525540d9e89f1253295683dd — David Florness 5 years ago 4a0c3e0
Start file that creates RSA key
1 files changed, 22 insertions(+), 0 deletions(-)

A crypto.rkt
A crypto.rkt => crypto.rkt +22 -0
@@ 0,0 1,22 @@
#lang racket
(require math/number-theory)

(provide e p q d)

(define keylen 1024)
(define e 65537)

(define (gen)
  (let* ([p (random-prime (expt 2 keylen))]
         [q (random-prime (expt 2 keylen))]
         [λn (lcm (sub1 p) (sub1 q))])
    (if (and (eq? (gcd e λn) 1)
             (not (eq? (arithmetic-shift (abs (- p q))
                                         (- (- (/ keylen 2) 100)))
                       0)))
        (values p q λn)
        (gen))))

(define-values (p q λn) (gen))
(define n (* p q))
(define d (modular-inverse e λn))