class WorkInfo < ActiveRecord::Base attr_accessible :DoB, :SSN, :bonuses, :income, :years_worked belongs_to :user has_one :key_management, :foreign_key => :user_id, :primary_key => :user_id, :dependent => :destroy #before_save :encrypt_ssn # We should probably use this def last_four "***-**-" << self.decrypt_ssn[-4,4] end def encrypt_ssn aes = OpenSSL::Cipher::Cipher.new(cipher_type) aes.encrypt aes.key = key aes.iv = iv if iv != nil self.encrypted_ssn = aes.update(self.SSN) + aes.final self.SSN = nil end def decrypt_ssn aes = OpenSSL::Cipher::Cipher.new(cipher_type) aes.decrypt aes.key = key aes.iv = iv if iv != nil aes.update(self.encrypted_ssn) + aes.final end def key raise "Key Missing" if !(KEY) KEY end def iv raise "No IV for this User" if !(self.key_management.iv) self.key_management.iv end def cipher_type 'aes-256-cbc' end end