Pure Python Data Mangling or Encrypting

Peter Otten __peter__ at web.de
Sat Jun 27 04:29:06 EDT 2015


Randall Smith wrote:

> Chunks of data (about 2MB) are to be stored on machines using a
> peer-to-peer protocol.  The recipient of these chunks can't assume that
> the payload is benign.  While the data senders are supposed to encrypt
> data, that's not guaranteed, and I'd like to protect the recipient
> against exposure to nefarious data by mangling or encrypting the data
> before it is written to disk.
> 
> My original idea was for the recipient to encrypt using AES.  But I want
> to keep this software pure Python "batteries included" and not require
> installation of other platform-dependent software.  Pure Python AES and
> even DES are just way too slow.  I don't know that I really need
> encryption here, but some type of fast mangling algorithm where a bad
> actor sending a payload can't guess the output ahead of time.
> 
> Any ideas are appreciated.  Thanks.

Would it be sufficient to prepend the chunk with one block, say, of random 
data? To unmangle you'd just strip off that block.

BLOCK = os.urandom(BLOCKSIZE)

def mangle(source, dest):
    dest.write(BLOCK)
    shutil.copyfileobj(source, dest)

def unmangle(source, dest):
    source.read(BLOCKSIZE)
    shutil.copyfileobj(source, dest)

Disclaimer: I did not follow the ongoing discussion.




More information about the Python-list mailing list