On 9/20/07, Python Maniac <[EMAIL PROTECTED]> wrote: > I am new to Python however I would like some feedback from those who > know more about Python than I do at this time.
Well, you could save some time by not applying the scramble one line at a time (that is if you don't mind losing the line endings in the scrambled version). For that to be effective though, you probably want to open in binary mode. Also, your scramble can be written using list comprehension. [code] def scramble(s, key=0x80): return ''.join([chr(ord(c) ^ key) for c in s]) output = scramble(f.read()) [/code] If you use xor (^) as above, you can use the same method for scramble as descramble (running it again with the same key will descramble) and you can use an arbitrary key. Though, with 255 combinations, it isn't very strong encryption. If you want stronger encryption you can use the following AESish algorithm: [code] import random def scramble(s, key): random.seed(key) return ''.join([chr(ord(c) ^ random.randint(0,255)) for c in s]) [/code] This allows you to use much larger keys, but with a similar effect. Still not strong enough to be unbreakable, but much better than the origional. It is strong enough that someone knowing how you scrambled it will have trouble unscrambling it even if they don't know the key. Matt -- http://mail.python.org/mailman/listinfo/python-list