mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-30 08:04:08 +00:00
77 lines
3.2 KiB
Plaintext
77 lines
3.2 KiB
Plaintext
Python Cryptography Toolkit (pycrypto)
|
|
======================================
|
|
|
|
This is a collection of both secure hash functions (such as MD5 and SHA),
|
|
and various encryption algorithms (AES, DES, IDEA, RSA, ElGamal, etc.). The
|
|
package is structured to make adding new modules easy. I consider this
|
|
section to be essentially complete, and the software interface will almost
|
|
certainly not change in an incompatible way in the future; all that remains
|
|
to be done is to fix any bugs that show up. If you encounter a bug, please
|
|
report it in the SourceForge bug tracker at
|
|
https://sourceforge.net/tracker/?group_id=20937&atid=120937
|
|
|
|
An example usage of the MD5 module is:
|
|
>>> from Crypto.Hash import MD5
|
|
>>> hash=MD5.new()
|
|
>>> hash.update('message')
|
|
>>> hash.digest()
|
|
'x\xe71\x02}\x8f\xd5\x0e\xd6B4\x0b|\x9ac\xb3'
|
|
|
|
An example usage of an encryption algorithm (AES, in this case) is:
|
|
|
|
>>> from Crypto.Cipher import AES
|
|
>>> obj=AES.new('This is a key456', AES.MODE_ECB)
|
|
>>> message="The answer is no"
|
|
>>> ciphertext=obj.encrypt(message)
|
|
>>> ciphertext
|
|
'o\x1aq_{P+\xd0\x07\xce\x89\xd1=M\x989'
|
|
>>> obj2 = AES.new('This is a key456', AES.MODE_ECB)
|
|
>>> obj2.decrypt(ciphertext)
|
|
'The answer is no'
|
|
|
|
One possible application of the modules is writing secure
|
|
administration tools. Another application is in writing daemons and
|
|
servers. Clients and servers can encrypt the data being exchanged and
|
|
mutually authenticate themselves; daemons can encrypt private data for
|
|
added security. Python also provides a pleasant framework for
|
|
prototyping and experimentation with cryptographic algorithms; thanks
|
|
to its arbitrary-length integers, public key algorithms are easily
|
|
implemented.
|
|
|
|
Development of the toolkit can be discussed on the pct mailing list;
|
|
archives and instructions for subscribing at at
|
|
<URL:http://www.amk.ca/mailman/listinfo/pct>.
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
The toolkit is written and tested using Python 2.2, though it should
|
|
also work with Python 2.1. Python 1.5.2 is not supported, and the
|
|
setup.py script will abort if you run it with 1.5.2.
|
|
|
|
The modules are packaged using the Distutils, so you can simply run
|
|
"python setup.py build" to build the package, and "python setup.py
|
|
install" to install it.
|
|
|
|
If the setup.py script crashes with a DistutilsPlatformError
|
|
complaining that the file /usr/lib/python2.2/config/Makefile doesn't
|
|
exist, this means that the files needed for compiling new Python
|
|
modules aren't installed on your system. Red Hat users often run into
|
|
this because they don't have the python2-devel RPM installed. The fix
|
|
is to simply install the requisite RPM.
|
|
|
|
To verify that everything is in order, run "python test.py". It will test
|
|
all the cryptographic modules, skipping ones that aren't available. If the
|
|
test script reports an error on your machine, please report the bug using
|
|
the bug tracker (URL given above). If possible, track down the bug and
|
|
include a patch that fixes it.
|
|
|
|
To install the package under the site-packages directory of
|
|
your Python installation, run "python setup.py install".
|
|
|
|
If you have any comments, corrections, or improvements for this package,
|
|
please send it to the 'pct' mailing list. Good luck!
|
|
|
|
--amk (www.amk.ca)
|