Click here to Skip to main content
15,356,336 members
Articles / Desktop Programming / MFC
Posted 20 Jun 2006


20 bookmarked

Extended Password Generator

Rate me:
Please Sign up or sign in to vote.
3.55/5 (8 votes)
20 Jun 2006CPOL2 min read
The tool-at-hand of any system administrator to generate pronounceable and random passwords, secured against brute-force dictionary attacks.
EPG 1.5.1


Extended Password Generator is the tool-at-hand of any systems administrator to generate pronounceable and random passwords, secured against brute-force dictionary attacks.

These passwords are got in the form of easily pronounceable English grammar, therefore they are easy to remember, store, and enter into the computer systems.

This algorithm was initially suggested by National Technical Information Service (NTIS), developed at Federal Information Processing Standard (FIPS) No181 "Automated Password Generator" and modified by me to implement exclude/include scheme.

This algorithm uses pseudo-random generator (PRG) to find characters that form syllables and then pronounceable words. PRG produces random data in accordance with the procedure, described in Appendix C of ANSI X9.17, and uses 3DES as block cipher. Values of seed and key are getting from OS CryptoAPI. That data is cryptographically random and may be used to generate random initialization vectors (IV) and salt values. So, there is no need to seed the random number generator manually.

EPG can also produce random (non-pronounceable) passwords.

Nowadays hackers are equipped with brute-force dictionaries of frequent, human-devised passwords. Running through those lists can help the attackers to find passwords and break open defence. In EPG each new password can be checked against the Bloom Filter, and if its hash is found in the Filter, EPG marks it with '!' or 'X' (depending on what exactly was found in the Filter). BFM (Bloom Filter Manager) is shipped with EPG to help you manage the Bloom Filters. This idea of Bloom Filter was taken from Adel I. Mirzazhanov's APG. Probability of 'false positive' level is selected at 1%, as wishing to maximally decrease size of the Bloom Filter (and size of the project itself) while this level stays relatively acceptable.

After all, EPG also has a nice GUI with quality meter and context sensitive help with F1. Password list can be printed, exported to HTML or text files or be copied to clipboard.

EPG uses Boost Library. To recompile EPG yourself, you need version 1.33.1 of Boost Library properly compiled and installed. Older versions should work too.


Thanks to:

  • Adel I. Mirzazhanov for idea of EPG and Bloom Filter
  • Andrzej Markowski for his CCustomBitmapButton class
  • Boost developers
  • Chris Maunder for his excellent GridControl and CSystemTray classes and Iain Clarke for GridCellProgress control
  • Dr.Brian Gladman for his SHA algorithms implementation
  • Eric Young for his DES ciphers implementation
  • uemakeXp development team for CDlgAnchor class
  • Wei Dai and his Crypto++ Library (and some ideas)

Visit EPG Project page at Sourceforge.NET


  • 20th June, 2006: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Eugene Podkopaev
Web Developer
Russian Federation Russian Federation
No Biography provided

Comments and Discussions

GeneralCurrent release Pin
Eugene Podkopaev3-Jul-06 1:04
MemberEugene Podkopaev3-Jul-06 1:04 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.