Mike Ivanov, Active State, May 2010. http://www.activestate.com/blog/2010/05/python-crypto-state-art-part-3