Template language for random string generation

Devin Jeanpierre jeanpierreda at gmail.com
Sun Aug 10 08:43:04 EDT 2014


On Fri, Aug 8, 2014 at 2:01 AM, Paul Wolf <paulwolf333 at gmail.com> wrote:
> This is a proposal with a working implementation for a random string generation template syntax for Python. `strgen` is a module for generating random strings in Python using a regex-like template language. Example:
>
>     >>> from strgen import StringGenerator as SG
>     >>> SG("[\l\d]{8:15}&[\d]&[\p]").render()
>     u'F0vghTjKalf4^mGLk'

Why aren't you using regular expressions? I am all for conciseness,
but using an existing format is so helpful...

Unfortunately, the equivalent regexp probably looks like
r'(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z0-9]{8:15}'

(I've been working on this kind of thing with regexps, but it's still
incomplete.)

> * Uses SystemRandom class (if available, or falls back to Random)

This sounds cryptographically weak. Isn't the normal thing to do to
use a cryptographic hash function to generate a pseudorandom sequence?

Someone should write a cryptographically secure pseudorandom number
generator library for Python. :(

(I think OpenSSL comes with one, but then you can't choose the seed.)

-- Devin



More information about the Python-list mailing list