% Copyright (C) 2004 Brian Alliet \documentclass[11pt]{article} \usepackage{palatino} \usepackage{fullpage} \usepackage{parskip} \usepackage{lhs} \usepackage{amsmath} \begin{document} \title{RSA} \author{Brian Alliet} \maketitle \ignore{ \begin{code} module RSA ( rsaEncrypt, rsaGenKey ) where import Random (RandomGen) import Brianweb.Math.NumberTheory \end{code} } \section{RSA Algorithm} \begin{code} rsaEncrypt :: Integer -> Integer -> Integer -> Integer rsaEncrypt pq e m = powMod pq m e \end{code} \begin{code} rsaGenKey :: RandomGen a => Int -> a -> ((Integer,Integer,Integer,Integer),a) rsaGenKey bits rg0 | gcd e phi /= 1 = rsaGenKey bits rg2 | otherwise = ((p,q,e,d),rg2) where bitsq = bits `div` 2 bitsp = bits - bitsq (p,rg1) = getPrime bitsp rg0 (q,rg2) = getPrime bitsq rg1 phi = (p-1)*(q-1) e = 65537 d = multInvMod phi e \end{code} \section{Math Functions} \input{Brianweb/Math/NumberTheory.lhs} \input{RSAMain.lhs} \end{document}