# Password Cracking with Brute Force Algorithm and Dictionary Attack Using Parallel Programming
## 2 Literature Review
[20] suggests a new method for creating effective hardware accelerators for password recovery on FPGA devices using the RAR3 algorithm. This approach involves making adjustments to the data paths at two levels of granularity: coarse and fine. Coarse-grained adjustments are used to remove the randomness of message format resulting from variations in password length, while fine-grained adjustments meet the data requirements of the pipelined hashing unit when the password length is constant. This strategy enables efficient data scheduling via regular data interconnect paths, which improves efficiency and reduces overhead for password recovery accelerator components. [PERSON] et al. [21] published a study on how to perform password recovery for RAR files using CUDA. With an emphasis on the process of generating keys for AES encryption, the step that takes the most time in the RAR encryption/decryption process, the article describes research on password recovery for encrypted RAR files. A version that utilizes a CPU is also provided for comparison. The implementation is based on NVIDIA's CUDA. The study finds that the GPU performs better than the CPU but suggests that the SHA-1 algorithm may still need to be improved. Also suggested is a modified approach for calculating program performance. [PERSON] et al. [22] assessed the security of pattern-based passwords used in Android devices by exhaustively searching for secret patterns with the help of GPU parallelism. The Android system employs a 3 \(\times\) 3 grid for pattern locking, with a total of 389,112 permitted patterns that must adhere to certain restrictions, such as having a minimum of four points and avoiding intermediate points. The researchers aimed to determine the vulnerability of these passwords to hacking techniques such as shoulder surfing or smudge attacks by employing a brute force search method, which involves graph searches with four to nine vertices and a maximum of eight edges. For the purpose of improving efficiency, the GPU-implemented brute force search algorithm is optimized and recursive. The algorithm explores different paths in the graph with multiple threads, each having a unique identifier to track the path, and octal representation is used for easier conversion. The study provides some initial results indicating the potential vulnerability of pattern-based passwords on Android devices. The study presented in [9] focuses on recovering encrypted document passwords, which is in demand for forensic purposes. On standard hardware with multi-core CPUs or GPUs, the authors conduct an experimental study of the password recovery procedure. The findings demonstrate that recovery time may be estimated given the length, alphabet, and hardware performance of the password. The fundamental technique for recovering a password entails a thorough search (brute force). However, with the help of powerful GPUs, the operation can be finished faster than it would with a CPU-only computer. In addition, authors in [9] improved their program by adding more advanced password generators and compatibility for additional file types. They also concentrated on password recovery in distributed environments. In future studies, they intend to evaluate their technology against existing programs such as the AccessData Password Recovery Toolkit, version 7.6.0. Similarly, another research paper [23] presents a solution for optimizing the password recovery process for RAR files, which are compressed archives that employ the SHA-1 hashing and the AES encryption algorithm. The authors use a coarse granularity parallel technique and concentrate on using GPUs to speed up password recovery. The strategy employs four optimization techniques to boost performance, including asynchronous parallel between CPU and GPU, redundant calculations and conditional statements reduction, data locality using LDS, and the usage of register optimization. According to the experiments, the optimized parallel version outperformed a well-optimized serial version on a CPU by a factor of 43 to 57.