Update... I think I've fixed the insert issue. The updated model is here:
http://dpaste.com/10264/ Now, I just can't get the passport back out of the database :-) I put together a quick view/template, and the passport is being returned as an empty string, with no errors. The relavent part of the the model is: def get_passport(self): secret_key = settings.SECRET_KEY k = ezPyCrypto.key() k.importKey(secret_key) return(k.decString(self.passport)) decryptedPP = property(get_passport) My view is really short, so I'll just post it here: def list(request): registrations = registerDiver.objects.all() return render_to_response('list.html', { 'registrations' : registrations, }, context_instance=RequestContext(request)) and my template: <ul> {% for diver in registrations %} <li>{{ diver.first_name }} | {{ diver.decryptedPP }}</li> {% endfor %} </ul> Any ideas why decryptedPP is blank? Thanks, Kai On May 14, 3:17 pm, elemental <[EMAIL PROTECTED]> wrote: > Ben, thanks a lot, some good info here. The Satchmo project is a great > reference--I hadn't seen it before. I've followed most of your > suggestions, and am getting closer but still not there. For reference, > I've posted both my view[0] and my model[1]. > > The base64 bit seems to have eliminated the original error, thanks for > that tip. At this point, my model is saving but the passport column is > not getting inserted to. Essentially, all info BUT the passport is > being inserted into the database, and I'm not sure why (I'm not > receiving any errors). > > I don't fully understand the difference between the Satchmo method and > the getter/setter method that you mentioned, as they seem more or less > the same to me. I've modeled my code as closely with the Satchmo > method as possible, as it was something concrete for me to work > against. I noticed they are only using property() on the retrieval > (decrypt) of the CC info, not on the setting (encrypt), so I've left > property() out of my code for now as I'm just trying to get data > inserted first (then I'll worry about retrieving it). > > Any ideas as to why the passport is not being inserted? > > [0]http://dpaste.com/10262/ > [1]http://dpaste.com/10263/ > > On May 14, 1:55 am, "Benjamin Slavin" <[EMAIL PROTECTED]> > wrote: > > > On 5/13/07, elemental <[EMAIL PROTECTED]> wrote: > > > > UnicodeDecodeError at /register/ > > > 'ascii' codec can't decode byte 0xb4 in position 0: ordinal not in > > > range(128) > > > > For reference, here is the save portion of the model: > > > > def save(self): > > > key = ezPyCrypto.key(512) > > > self.passport = key.encString(self.passport) > > > First, I'd recommend making a slight modification to this... you're > > continually re-encrypting the passport information... so if you call > > .save() twice you'll get an double-encrypted .passport value. > > > One option can be found in the Satchmo Project's handling of credit > > card data. [0] They use a storeCC method and a decryptedCC property > > to handle encryption/decryption. > > > Another option is to use getter and setter methods, and access them > > via a property... this way encryption and decryption are transparent > > operations (this may or may not be desirable, depending on your > > environment). > > > So, for example: > > class YourModel(models.Model): > > ... > > encrypted_passport = models.CharField(...) > > def get_passport(self): > > #decrypt and return decrypted value > > def set_passport(self, value): > > #encrypt and store in self.encrypted_passport > > passport = property(get_passport, set_passport) > > > Getting back to your original question, this sounds like you're > > getting binary data back from encString (it looks like it's built on > > top of pycrypto[1], so that's likely). You can try the following to > > convert it to ASCII text before saving it: > > self.passport = key.encString(...).encode('base64') > > > Then, just run .decode('base64') on the string before running decryption. > > > Hope that helps, > > - Ben > > > [0]http://www.satchmoproject.com/trac/browser/satchmo/trunk/satchmo/paym... > > [1]http://www.amk.ca/python/code/crypto.html --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---