[Tutor] string to binary and back... Python 3

Dave Angel d at davea.name
Fri Jul 20 00:33:10 CEST 2012


On 07/19/2012 05:55 PM, Prasad, Ramit wrote:
>> I am not sure how to answer that question because all files are binary,
>> but the files that I will parse have an encoding that allows them to be
>> read in a non-binary output. But my program will not use the in a
>> non-binary way, that is why I plan to open them with the 'b' mode to
>> open them as binary with no encoding assumed by python. I just not have
>> tested this new technique that you gave me on a binary file yet as I was
>> still implementing it for strings.
> As far as I know, even in binary mode, python will convert the 
> binary data to read and write strings. So there is no reason 
> this technique would not work for binary. Note, I was able to use
> the string representation of a PDF file to write another PDF file.
> So you do not need to worry about the conversion of binary to strings.
> All you need to do is convert the string to int, encrypt, decrypt, 
> convert back to string, and write out again.
>
> Note Python3 being Unicode might change things a bit. Not sure if
> you will need to convert to bytes or some_string.decode('ascii').

In Python 3, if you open the file  with "b"  (as Jordan has said), it
creates a bytes object.  No use of strings needed or wanted.  And no
assumptions of ascii, except for the output of the % operator on a hex
conversion.


myfile = open(filename, "b")
data = myfile.read(size)

At that point, convert it to hex with:
   hexdata = binascii.hexlify(data)
then convert that to an integer:
   numdata = int(hexdata, 16)

At that point, it's ready to xor with the one-time key, which had better
be the appropriate size to match the data length.

newhexdata = bytes("%x" % numdata, "ascii")
newdata = binascii.unhexlify(newhexdata)

If the file is bigger than the key, you have to get a new key. If the
keys are chosen with a range of 2**200, then you'd read and convert the
file 25 bytes at a time.



-- 

DaveA



More information about the Tutor mailing list