Most, if not all, password generators are built on their core language's random number generation algorithms, which necessarily are always limited to pseudorandomness as opposed to producing truly random results. A popular web service that provides actual random numbers is RANDOM.org, and they do, indeed, have a secure password generation service. However, password requirements often are more strict than what that service provides. For example, the passwords generated by it never have non-alphanumeric characters, sometimes referred to as "special characters", and this is quite often a requirement. Hence, this project was born.
This project makes use of the RANDOM.org API in order to obtain truly random bytes from which to create the resulting password, and then filters this result in a "sieve" to produce an output of only those characters in the alphanumeric and special characters sets – collectively referred to here as "password characters". These characters are those which are able to be typed from an English-language keyboard. From this set of candidate characters, the resulting password is created from the substring beginning with the first character until the nth character, where n is the required password length.
This project was created using Qt Creator. It should compile without any issues on any platform that has a build of Qt available for it. If you run into issues and find a workaround, fork the project and then open a pull request to add it to the code base.
- Qt 6
- Qt Creator (or your favorite C++ IDE)
This is free software, built on the shoulders of previous free software. The libraries required to build this project are linked as Git submodules in the lib directory:
- GUI code utilizes the Qt framework, which is itself licensed under the GNU GPL and LGPL version 3 licenses; components of Qt that are licensed differently are listed on their site.
- Icons are provided by Fluent UI System Icons by Microsoft; licensed under the MIT License.
- The logo for this program was created using the libre font Libertine, which is licensed under both the GNU GPL and the Open Font License.
You are both free and encouraged to copy, share, and remix this work, in accordance with the Free Art License.
The directory structure of this project follows the canonical C++ structure described by Boris Kolpackov in Document P1204R0: "Canonical Project Structure" on 08 OCT 2018.