★ wanayoo — archive 1999 http://starship.python.net/crew/amk/python/crypto.htmlNouvelle recherche | Portail wanayoo
  

HomePython
Cryptography and Python

Index
Code
Code and Modules
Sample Scripts
Unmaintained code
Documentation
Articles/Essays
Python Grimoire
HOWTOs
PSA Bookstore
Activities
String-SIG
Advocacy
Other Lists
My project list
XML-SIG
Database-SIG

Email me
amk1@bigfoot.com


Modified: 17 Jan 2000
  

These Packages Declared Obsolete

The packages on this page are no longer maintained. Most significantly, I no longer recommend using the Python cryptography modules available here. They were among my first Python projects, and there are many things I'd do differently today, but I lack the time to fix them.

Instead, I recommend using Marc-André Lemburg's mxCrypto package for basic ciphers, for the following reasons:

  • The Python cryptography modules include their own implementations of various algorithms; mxCrypto sits on top of OpenSSL, which has better optimized code. You'll also benefit from a larger user population, and a greater degree of auditing of the code.
  • mxCrypto can eventually provide interfaces to RSA that are actually useful. My public-key code, while amusing to write and play with, never provided PKCS encoding and was never more than a toy.
  • Marc-André is maintaining mxCrypto, and you can actually purchase support from him if you need it. I have lots of e-mails about bugs that I've never gotten around to looking at, much less fixing.

For SSL support, look at M2Crypto.

You can still download my code, if you really need it, but I really don't recommend using it in any new projects.

As of January 14, 2000, the US export control regulations have been relaxed for source code. Export controls still apply to binary software, though; if you're an American citizen, please consult the informative links at the Encryption Policy Resource Pages and the Electronic Frontier Foundation, and write a brief letter to your legislators expressing your annoyance.

You can see everything I've made available, or select one of the individual links below. The package was divided into export-controlled and exportable components; you'll have to download both components for a complete system.

  • pycrypt-1.1a2-export.tgz: Contains hashing algorithms, chaffing/winnowing, random number generation, and various utility modules. (You must get this component.)
  • pycrypt-1.1a2-us.tgz: Contains block encryption algorithms, RSA, and ElGamal. Download the exportable subset first and untar it, and then download and untar this archive.

  • I once wrote an SSLeay interface for SSLeay 0.6.x, which is quite old and outdated now. It didn't have wrapper code for all of SSLeay's features, since the extension module was written by hand. Use mxCrypto, instead. The pyssl package is still available, but not recommended.

  • Python code to read/write PGP-format messages; it's only alpha-quality code. A more recent version of this code is included in the export-controlled subset of the 1.1 alpha releases of my cryptography modules; you'd be better off downloading that instead.

    I'd recommend against using this module, unless you're willing to bring it up to date. When that code was written, PGP 2.6.3 was the current version. Since then, the OpenPGP RFC has been written, changing the format in various ways, PGP is now up to version 6, and GNU Privacy Guard is also available. The PyPGP code would need to be updated to match the current format, which wouldn't be difficult, but debugging it would probably be rather tedious and lengthy. (I speak from experience gained while implementing that alpha code. A lot of time was spent stepping through PGP's code to find out why it was reporting an error on my code's output; eventually you find that you've forgetten a byte or put things in the wrong order or something similarly trivial, you fix it, and then start stepping through the code again, looking for the next bug.)

    If you want to do PGP-compatible encryption, I'd recommend seeing if you can just spawn a separate PGP or GnuPG process to do your encryption. With GnuPG, if you don't need to use RSA and can live with Diffie-Hellman as the only algorithm, then you wouldn't even have to buy anything or license the RSA patent.

  • ufcrypt.tgz, a Python interface to Michael Glad's Ultra-Fast crypt(). Ultra-Fast crypt() is optimized for cases where many passwords will be processed using the same salt value; it's designed for writing password-cracking programs.

Other links of interest