Module yawPyCrypto.Cipher
Cipher.py
EncryptCipher
Stream encryption wrapper class. This class offers an encryption
stream with a known password (passed as a parameter at object
initialization time). Passing data to the stream is done using the
feed() method, when encryption has finished, you need to call
finish() to close the stream.
DecryptCipher
Stream decryption wrapper class. This class offers decryption of
streams generated by the EncryptCipher class. These streams are fed
to the decryption by calling the feed() method, and when the stream
is finished, it is necessary to call the finish() method of the
stream object, which checks for stream end and flushes all pending
output.
ZipEn/DecryptCipher
Classes which expose a similar interface as EncryptCipher and
DecryptCipher, but which additionally to doing encryption compress
the passed in byte-stream on encryption, and decompress it on
decryption. This makes the data which is actually stored in the
encrypted stream more "random", which most security experts
recommend as a security bonus. These classes are only defined if
USE_ZLIB is defined as True in the configuration file.
Interface of cipher classes
The interface of the cipher classes is simple. On encryption, you pass
a password (the encryption key), the cipher algorithm to use, the
cipher mode to use, and an optional hash algorithm which is used to
create a checksum of the data that is in the byte-stream. All this
information is stored in the encryption stream (which should be of no
concern, as it's not the chosen algorithm that makes encryption safe,
but the password). On decryption, this information is read, and an
appropriate stream for decryption is automatically created, so that
decryption only needs the password that was used for encryption.
The encryption and decryption classes have a similar interface which
concerns feeding data to the object. Calling feed() will feed more
data into the stream, possibly encrypting/decrypting some of it
directly when the call is made. Calling finish() will close the
stream on encryption and write out the final blocks, while on
decryption the stream end condition is checked.
Data which has been created by the encryption/decryption routines is
stored for retrieval in the property data of the instance, retrieving
the value of this property will empty the current output buffer.
Overriding of methods
The most import method you can override of any *Cipher class is
_writeOutput(self,data). This method is called by the cipher code to
put available output into the buffer from which data is retrieved. In
case you want to connect the encryption directly to a file or the
like, it may be feasible to override this method, and directly write
the passed data to the output file/socket/whatever.
You can override several other methods to create your own stream
handling capabilities or to add stream wrapping (which is also done
by overriding the _writeOutput() method. Please see the documentation
for AdvCipher for a complete overview on how to achieve this.
Copyright
yawPyCrypto is copyright (C) 2002-3 by Heiko Wundram
<heiko@asta.uni-saarland.de>.
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library in the file "COPYLEFT"; if
not, write to the Free Software Foundation, Inc., 59 Temple Place,
Suite 330, Boston, MA 02111-1307 USA
Classes |
DecryptCipher |
Decryption cipher class. |
EncryptCipher |
Encryption cipher class. |
ZipDecryptCipher |
Class which works similar to DecryptCipher, but streams all data read
from the encrypted stream through unzipping on reading. |
ZipEncryptCipher |
Class which works similar to EncryptCipher, but streams all data
through zipping on writing, so that it is in effect
"randomized" on writing. |
__date__
-
- Type:
-
str
- Value:
|
__version__
-
- Type:
-
str
- Value:
|
CIPHER_AES
-
- Type:
-
int
- Value:
|
CIPHER_ARC2
-
- Type:
-
int
- Value:
|
CIPHER_ARC4
-
- Type:
-
int
- Value:
|
CIPHER_BLOWFISH
-
- Type:
-
int
- Value:
|
CIPHER_CAST
-
- Type:
-
int
- Value:
|
CIPHER_DES3
-
- Type:
-
int
- Value:
|
HASH_MD2
-
- Type:
-
int
- Value:
|
HASH_MD4
-
- Type:
-
int
- Value:
|
HASH_MD5
-
- Type:
-
int
- Value:
|
HASH_NONE
-
- Type:
-
int
- Value:
|
HASH_SHA
-
- Type:
-
int
- Value:
|
HAVE_AES
-
- Type:
-
bool
- Value:
|
HAVE_ARC2
-
- Type:
-
bool
- Value:
|
HAVE_ARC4
-
- Type:
-
bool
- Value:
|
HAVE_BLOWFISH
-
- Type:
-
bool
- Value:
|
HAVE_CAST
-
- Type:
-
bool
- Value:
|
HAVE_DES3
-
- Type:
-
bool
- Value:
|
HAVE_DSA
-
- Type:
-
bool
- Value:
|
HAVE_ELGAMAL
-
- Type:
-
bool
- Value:
|
HAVE_IDEA
-
- Type:
-
bool
- Value:
|
HAVE_MD2
-
- Type:
-
bool
- Value:
|
HAVE_MD4
-
- Type:
-
bool
- Value:
|
HAVE_MD5
-
- Type:
-
bool
- Value:
|
HAVE_QNEW
-
- Type:
-
bool
- Value:
|
HAVE_RC5
-
- Type:
-
bool
- Value:
|
HAVE_RIPEMD
-
- Type:
-
bool
- Value:
|
HAVE_RSA
-
- Type:
-
bool
- Value:
|
HAVE_SHA
-
- Type:
-
bool
- Value:
|
LOAD_INSECURE_CIPHER_ALGOS
-
- Type:
-
int
- Value:
|
MODE_CBC
-
- Type:
-
int
- Value:
|
MODE_CFB
-
- Type:
-
int
- Value:
|
MODE_CTR
-
- Type:
-
int
- Value:
|
MODE_ECB
-
- Type:
-
int
- Value:
|
MODE_NONE
-
- Type:
-
int
- Value:
|
MODE_OFB
-
- Type:
-
int
- Value:
|
MODE_PGP
-
- Type:
-
int
- Value:
|
PUBLICKEY_DSA
-
- Type:
-
int
- Value:
|
PUBLICKEY_ELGAMAL
-
- Type:
-
int
- Value:
|
PUBLICKEY_QNEW
-
- Type:
-
int
- Value:
|
PUBLICKEY_RSA
-
- Type:
-
int
- Value:
|
USE_ZLIB
-
- Type:
-
bool
- Value:
|