[Tutor] How do I save the output of the rotor module?
Danny Yoo
dyoo at hkn.eecs.berkeley.edu
Thu Nov 6 21:48:30 EST 2003
On Thu, 6 Nov 2003, Mike Faire wrote:
> I wrote a simple script to get acquainted with the rotor module.
> Encrypting and decrypting was simple enough. However, once I save the
> encrypted list to a file, it will not decrypt correctly beyond the first
> newline.
Hi Mike,
'rotor' provides no guarantee that
r.encrypt(a + b)
is the same as
r.encrypt(a) + r.encrypt(b)
Let me check something...
###
>>> r = rotor.newrotor("606")
>>> r.encrypt("hello") + r.encrypt("world")
'~\xe5k\t&\n\x17@\t\x08'
>>>
>>>
>>> r = rotor.newrotor("606")
>>> r.encrypt("helloworld")
'~\xe5k\t&\x85\xe0>^\\'
###
So that's one issue we need to be aware of.
Another is that newlines themselves will be encoded!
###
>>> r.encrypt("\n\n\n")
'*\x86O'
###
These two facts interact in a funny way: since you're doing the encoding,
line by line:
> rt = rotor.newrotor('606')
> for item in contents:
> encon.append(rt.encrypt(item))
> print encon
is very likely that the encoded file won't have the same number of
newlines as the original input.
This, combined with the knowledge that:
r.encrypt(a) + r.encrypt(b) != r.encrypt(a + b)
should be enough to see that we're in trouble as soon as we try decoding
the string. *grin*
Does this make sense so far?
More information about the Tutor
mailing list