Bottleneck: easy obscurity "encryption" via xor

Tino Lange tl_news at nexgo.de
Tue Jul 29 18:03:06 EDT 2003


Hi!

I identified a bottleneck in my programs.

I just want to "encrypt" data by easy xoring. Ok - that's no
encryption at all -  I know. But it's hardly readable - and that's
enough :-) Just some quick obscurity.

It turns out not to be quick at all. I really didn't expect this to be
a bottleneck, but it takes quite some time.

Here's the code:

>$ cat python/EasyCrypt.py
>#! /usr/bin/env python
>import operator
>def xorcrypt(str, salt = 255):
>    if salt > 255:
>        raise "Invalid salt! Must be < 255!"
>    return reduce(lambda x,y: operator.add(x, chr(y)), map(lambda char, _salt = salt: operator.xor(ord(char), _salt), str), "")

xor'ing medium sized-files takes long time. For example a 360
kByte-File takes:

>$ time ./just_crypt.py Userdatan/ScanImage01.jpg > bert
>real    1m52.138s
>user    0m40.320s
>sys     1m6.030s

on my 2.66 GHz P4 machine!

Hmmm, do you have some better implementation ideas? Some optimizing
tricks? (Besides coding in C to avoid immutable string problems)
I already took the operator module to speed up a bit - but it seems
that's not enough...

Thanks

Tino
 




More information about the Python-list mailing list