[pycrypto] AES, python 2.7 vs 3
Paul_Koning at Dell.com
Paul_Koning at Dell.com
Fri Feb 7 08:26:43 PST 2014
On Feb 7, 2014, at 1:29 AM, Dave Pawson <dave.pawson at gmail.com> wrote:
> On 6 February 2014 16:49, Dwayne Litzenberger <dlitz at dlitz.net> wrote:
>> On Mon, Feb 03, 2014 at 03:51:06PM +0100, Mirko Dziadzka wrote:
>>>
>>> Hi
>>>
>>> Without testing or verifying:
>>>
>>> You should probably use bytes in Python 3, not characters.
>>
>>
>> Yeah, this is a known bug. Under Python 3, PyCrypto should raise a
>> TypeError in most places where unicode strings are used instead of bytes,
>> but right now it just does weird things. Sorry about that.
>
>
> Recently playing about with reading / writing between Linux / Windows,
> one symptom I came across was that the decrypted string contained b' <string>'
> is that a part of this bug?
b’something’ is Python 3 syntax for a “bytes” literal.
It’s a good idea to spend some time reading the Python 3 documentation on text vs. bytes — “str” vs. “bytes” type. They really got this right, and it completely cures the ugly mess you get in Python 2 when dealing with strings vs. their encoding.
But it is new, and it’s different from what was done before — for good reasons.
One short summary is: “str” contains text, it’s abstract, it represents Unicode characters but does not talk about encoding. “bytes” contains sequences of bytes (octets — 8 bit integers), it’s concrete, it represents encoding of data in the outside world. You convert “str” to/from “bytes” when doing I/O. Anytime you are doing operations that need sequences of bytes, the type has to be “bytes”. Encryption is one such operation.
paul
More information about the pycrypto
mailing list