public
Description: Rails plugin to transparently encrypt attributes
Homepage: http://tuples.us/2008/06/17/the-prince-of-darkness-and-database-encryption/
Clone URL: git://github.com/jmckible/lucifer.git
jmckible (author)
Tue Jun 17 15:59:59 -0700 2008
commit  bb3e598c8f156d088c0a8c8efe0144a4507d8c85
tree    21f01cf2f230bb0893c7d2b91271e316b3d38f13
parent  67f0bf6a0259d892e9ab0fcd1b1aee5e8214f3d1
name age message
file .gitignore Tue Jun 17 10:06:29 -0700 2008 File outline. [jmckible]
file MIT-LICENSE Tue Jun 17 10:06:29 -0700 2008 File outline. [jmckible]
file README.rdoc Loading commit data...
file init.rb Tue Jun 17 12:07:06 -0700 2008 Wire up EzCrypto [jmckible]
file key.yml.example Tue Jun 17 12:10:29 -0700 2008 Include key.yml.example [jmckible]
directory lib/
directory test/ Tue Jun 17 12:07:06 -0700 2008 Wire up EzCrypto [jmckible]
README.rdoc

lucifer

Lucifer is Rails plugin which utilizes the ezcrypto gem to encrypt/decrypt database columns transparently.

Why is it called Lucifer? en.wikipedia.org/wiki/Lucifer_(cipher)

Installation

  ./script/plugin install git://github.com/jmckible/lucifer.git

Lucifer looks for a key and salt in config/key.yml. See key.yml.example

Usage

Add Lucifer to a class like so:

  class Person < ActiveRecord::Base
    # Database columns - id(integer), ssn_b(binary)
    encrypt_attributes
  end

Lucifer will treat any binary column that ends in _b as encryptable.

  person = Person.new :ssn=>'000-00-0000'
  => Person...
  person.save
  => true
  Person.first.ssn
  => '000-00-0000'

If you check out the database, you’ll see

  > select * from people;
   ---------------------------------
  | id         | ssn_b              |
   ----------------------------------
  | 1          | U??6?7f%25(?????   |
   ---------------------------------

Configuration

You can customize Lucifer by passing options like so:

  class Person < ActiveRecord::Base
    encrypt_attributes :suffix=>'_encrypted', :key_file=>'lucifer.yml'
  end
  • :suffix - You can override the _b selector with this option
  • :key_file - If you’d like to use a different file in your config/ directory, pass the name here

Author