1 USING: kernel math namespaces math-contrib errors ;
11 ! e = public key, d = private key, n = public modulus
15 : generate-rsa-keypair ( bitlen -- <rsa> )
17 2 /i generate-two-unique-primes [ q set p set ] 2keep [ * n set ] 2keep
20 m get ee get mod-inv m get + d set
21 ee get d get n get <rsa>
24 : rsa-encrypt ( message rsa -- encrypted ) [ rsa-e ] keep rsa-n ^mod ;
25 : rsa-decrypt ( encrypted rsa -- message ) [ rsa-d ] keep rsa-n ^mod ;