This project is code complete.
Polypass is polymorphous, one that assumes many forms, secure random password generator. It can generate cryptographically secure random passwords like alphanumeric, alphanumeric symbol, and even natural language passwords.
Years ago while managing large collections of Linux systems with the principles of Infrastructure as Code, I explored the idea of programmatically generating password hashes for local system accounts like the root superuser. My main goal was to utilize a cryptographically secure pseudo-random number generator (CSPRNG) to generate crypt compatible password hashes.
My fascination with the concepts of secure randomness and the guarantee of perfect secrecy collided with an affinity for the Ruby Programming Language. This lead me down a path of writing a simple 80 line Ruby Class with some basic helper methods using a modified version of the random_password_generator RubyGem and fusing it with Ruby's SecureRandom module. Ultimately, I achieved my original goal and it worked great for what it was used for: secure, random, and ephemeral generation of root user password hashes.
Fast forward years later, add an interest in Natural Language Processing, a much deeper understanding of the Ruby Programming Language, the same passion for secure randomness, a general desire to create and share free software, and you end up with a RubyGem called Polypass.
When writing Polypass I really wanted to incorporate a fun facet of Natural Language Processing into the generation of secure and random passwords. Fortunately, there are no lack of resources regarding NLP and I came across a very elegant and lightweight RubyGem called literate_randomizer.
Polypass leverages this RubyGem with a cryptographically secure pseudo-random number generator, and some Project Gutenberg supplied literary classics like Dracula, Frankenstein, The Iliad, which allows it to make some pretty amusing, spontaneous, and quite secure passwords.
Natural Language Processing
- How Secure Is My Password?
- Password Strength XKCD
- Password Cracking Wikipedia Page
- Password Wikipedia Page