University project for Computer Architecture course (MSc Computer Engineering at University of Pisa, A.Y. 2022-23)
The aim of this project is to develop and analyze the parallelization of a Brute Force Attack on the AES 256 encryption algorithm. In particular, what we want to analyze is:
- The performance comparison between the first parallelized version and the sequential version.
- The optimizations between the different parallelized versions.
The first parallelized version was implemented by exploiting the CPU multithreading, in C++. While the subsequent parallel versions were developed in order to be executed on the GPU, through implementation in CUDA-C.
- Select which version (sequential or multithreaded) you want to execute and then compile using the commands inside the makefiles.
- Run the generated executable.
- Select which version (before or after the NVIDIA Nsight Compute Optimization) you want to execute and then compile using the commands inside the makefiles.
- Run the generated executable, if you chose the version before the optimizations you have to pass as command line arguments first the number of blocks and then the number of threads per block.
Parallelized-AES-Brute-Force-Attack-with-Cuda
|
├── CPU versions
│ ├── sequential_version
│ │ ├── implementation
│ │ └── results
│ └── multithread_version
│ ├── implementation
│ └── results
|
└── GPU versions
│ ├── optimization after NVIDIA Nsight Compute analysis
│ │ ├── implementation
│ │ └── results
│ └── optimization before NVIDIA Nsight Compute analysis
│ ├── implementation
│ └── results
│
└── files
├── secret_files
└── text_files