Skip to content

LeviBarnes/EasyPublicPrivate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyPublicPrivate

Simple RSA encryption using public and private keys. Carefully commented for learners. RSA.cpp is the simplest code. RSA_omp.cpp has a few changes to facilitate OpenMP parallelization and includes pragma directives for OpenMP.

Build

make PublicPrivate (Uses g++) To build with OpenMP parallelization, add OMP=1 to the make line

Run

./PublicPrivate < in.txt Decryption can take a very long time with this simple implementation. You can run without taking input from in.txt. In that case, you will be prompted to enter two prime numbers and a message to be encrypted.

Multiple Versions

Multiple versions of the code are provided to give insight into speeding up encryption/decryption. Below are short descriptions of each version RSA.cpp - Simplest implementation

RSA_omp.cpp - Adds OpenMP directives to use all processor cores. Set OMP_NUM_THREADS appropriately or leave it undefined to use all cores

RSA_fastexp.cpp - Faster exponetiation for vastly improved performance. The change is described in the comment preceeding the fastexp() function

RSA_randomsalt.cpp- Splits each character into two long ints, one random integer and the character plus that integer. Before this change, each letter always translated to the same number during encryption

RSA_GPU.cpp - Adds directives for GPU acceleration using OpenACC. Requires PGI compilers. http://www.pgroup.com

RSA_CUDA.cpp - Accesses a GPU using CUDA. Requires nvidia toolkit. https://developer.nvidia.com/cuda-downloads

About

Simple RSA encryption using public and private keys. Carefully commented for learners.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors