Visit Jeremy's Blog.
Go Back > Forums > Non-*NIX Forums > Programming
User Name
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.


  Search this Thread
Old 01-23-2009, 02:48 PM   #1
Senior Member
Registered: Mar 2002
Location: Los Angeles, CA
Distribution: Debian, Ubuntu
Posts: 1,334

Rep: Reputation: 51
Python: Trying to store AES encrypted string into database - can I convert to ascii?

I'm encrypting some data to store in a database. The encryption needs to be 2 way. Rather than use bzip or base64, I'd like to use something that requires a key to retreive the data. The problem is, I need to store the encrypted string in a MySQL and/or Sqlite database, preferably in a varchar field rather than a blob.

The way I'm doing the encryption is like so:

thing = 'encrypt me'
thing = thing.rjust(16,' ')
key = 'some padded key ', AES.MODE_ECB)
encrypted_val = obj.encrypt(thing)
(and then later, I can do an obj.decrypt(encrypted_val))

which results in:
"\xbbs\rv\xf8'u\xf9_\x02\xde\xad\x93E9\xb4" ouptput by ipython which I believe does some sort of conversion so I can view the data. If I try to print out the value to a standard terminal, I get something like:

obj.encrypt(thing): '�p�
                         �*����        l1y'
(assuming you can even see that)

and, when I try to read that data from the db, similar problems arise & it causes my tests to fail.

Is there a better method of keyable two way encryption that results in ascii chars?
Is there a way to convert the binary to ascii for storage (like how ipython displays it), then a way to convert that ascii back to binary for obj.decrypt()?
Old 01-23-2009, 02:54 PM   #2
Senior Member
Registered: Mar 2002
Location: Los Angeles, CA
Distribution: Debian, Ubuntu
Posts: 1,334

Original Poster
Rep: Reputation: 51
As is typical.. after I give up & ask the forum, I find the solution...

this seems to work for bin -> ascii -> bin conversion:
In [28]: foo = obj.encrypt(thing)

In [29]: foo
Out[29]: 'cV\x0f\xc5u)\x8b\xc8\xf4\xf2\x02\x9e!\xca\xb6('

In [30]: bar = binascii.b2a_hex(foo)

In [31]: bar
Out[31]: '63560fc575298bc8f4f2029e21cab628'

In [33]: binascii.a2b_hex(bar)
Out[33]: 'cV\x0f\xc5u)\x8b\xc8\xf4\xf2\x02\x9e!\xca\xb6('

In [34]: gah = binascii.a2b_hex(bar)

In [35]: obj.decrypt(gah)
Out[35]: '      encrypt me'
Old 01-23-2009, 02:58 PM   #3
Registered: Dec 2007
Location: Slightly left of center
Distribution: slackware
Posts: 276
Blog Entries: 2

Rep: Reputation: 44
Hmmm... binary data stored in a database shouldn't be a problem, I'd take a look at the way it is being written and read and the table/field structure to make sure the values aren't being truncated or mangled in some way. If you really need to store ASCII instead of binary, you could always uuencode the binary data. That will, of course, dramatically increase the size of the stored data.


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
python: converting a 3 character octal string into and ASCII char llama_meme Programming 1 07-06-2010 03:00 PM
What R the requirements of aes-256 encrypted loopback device? zahoo Linux - Software 1 06-14-2005 09:47 AM
convert string to integer with python Kanaflloric Programming 2 05-27-2005 12:04 PM
in linux & c/c++: how do I convert an ascii string to utf8 & vice versa? davidh_uk Programming 2 02-06-2005 06:55 PM
AES encrypted file in Debian slashdotdash Debian 6 01-25-2005 04:46 PM > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 06:02 AM.

Main Menu
Write for LQ is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration