# Password Cracking with Brute Force Algorithm and Dictionary Attack Using Parallel Programming
## 1 Introduction  
In the domain of computer security, parallel computing has proven to be an effective method of accelerating the process of cracking passwords using brute force techniques as well as the dictionary attack. Brute force techniques involve trying every possible combination of characters until the correct password is obtained [1]. The duration of computation needed to discover a password by the brute force technique is reliant on various factors, including the length and complexity of the character set of the password, as well as the computational complexity of the encryption algorithm employed [2]. In addition, if the computation is carried out on a single processor, it may require even more time to crack the password. However, distributing the workload across multiple processors or devices can contribute to accelerating the process. This not only makes password cracking more efficient, but also increases the chances of having a successful cracking attempt. When a password is deemed to be highly secure, brute force password cracking becomes indispensable, but there are alternate methods for cracking passwords that are considered more favorable, such as the dictionary attack [3]. The dictionary attack uses a pre-compiled list or wordlist of commonly used passwords and matches them with the targeted password [4]. This method is less time-consuming compared to brute force but is only effective if the password exists in the list used. Therefore, it is usually used when the brute force attack takes too long to crack lengthy passwords [5]. Again, parallelprogramming can be utilized to reduce the time it takes to perform the attack. Nevertheless, parallel computing can also be used to implement highly optimized password-cracking algorithms, such as using GPUs for processing large amounts of data. [PERSON] et al. [6] argue that the difficulty of the algorithm determines how much computation is required. A study conducted by [PERSON] et al. [7] investigated the effectiveness of cracking SHA-1 hashed passwords using a GPCPU-based machine with brute force and dictionary attack methods. The results demonstrate that brute force is more effective in cracking passwords with fewer characters, with 11% of passwords containing seven or fewer characters cracked, compared to only 3% with the dictionary attack. On the other hand, dictionary attack proves to be more effective in cracking passwords with insecure character patterns, with 5053 passwords cracked versus 491 with the best brute force scenario. A combination of both methods (brute force and dictionary) provides a more balanced approach to cracking passwords, regardless of length or character pattern security [7]. The use of parallel computing in password cracking is essential not only for security professionals to empower their defense systems by identifying weak passwords used by employees, for instance, but also for individuals and organizations who may have lost or forgotten their passwords. Most operating systems and apps use key derivation functions (KDFs) to transform plaintext passwords to hashed passwords in order to prevent attackers from simply obtaining the clear text password. A brute force attack would be the only method to recover the plaintext password from a hashed password since KDFs are one-way functions [8]. Using parallel computing in password recovery is essential as it saves time and retrieves data and information protected by a forgotten password. On average, 76% of internet users use the same password across other websites, according to [9]. This increases the chance of their accounts being compromised. Another technique of cracking passwords is the dictionary attack. A pre-determined list of common passwords is used in the dictionary attack to achieve a potential match. This technique poses a significant threat to various entities, particularly in the realm of account and network security. For instance, it can involve exploiting Wi-Fi networks by targeting common passwords to gain unauthorized access [10].