1 USING: math.miller-rabin kernel math math.functions namespaces
12 ! e = public key, d = private key, n = public modulus
18 : generate-rsa-keypair ( numbits -- <rsa> )
20 2 /i 2 unique-primes first2 [ q set p set ] 2keep [ * n set ] 2keep
23 m get ee get mod-inv m get + d set
24 ee get d get n get <rsa>
27 : rsa-encrypt ( message rsa -- encrypted ) [ rsa-e ] keep rsa-n ^mod ;
28 : rsa-decrypt ( encrypted rsa -- message ) [ rsa-d ] keep rsa-n ^mod ;