Module: encrypted

An encryption plugin for Elixir utilizing the excellent PyCrypto library, which can be downloaded here: http://www.amk.ca/python/code/crypto

Values for columns that are specified to be encrypted will be transparently encrypted and safely encoded for storage in a unicode column using the powerful and secure Blowfish Cipher using a specified "secret" which can be passed into the plugin at class declaration time.

Example usage:

from elixir import *
from elixir.ext.encrypted import acts_as_encrypted

class Person(Entity):
    name = Field(Unicode)
    password = Field(Unicode)
    ssn = Field(Unicode)
    acts_as_encrypted(for_fields=['password', 'ssn'],
                      with_secret='secret')

The above Person entity will automatically encrypt and decrypt the password and ssn columns on save, update, and load. Different secrets can be specified on an entity by entity basis, for added security.

Important note: instance attributes are encrypted in-place. This means that if one of the encrypted attributes of an instance is accessed after the instance has been flushed to the database (and thus encrypted), the value for that attribute will be crypted in the in-memory object in addition to the database row.