criptografia / descriptografia de trilhas

Eu preciso fazer criptografia e descriptografia no meu aplicativo de trilhos. Estou tentando usar o ezcrypto, mas sempre que faço descriptografia, recebo esse err

OpenSSL::Cipher::CipherError in ProfilesController#show

wrong final block length

O que seria necessário alterar para interromper esse erro. Tentei usar outra implementação do openssl assim (métodos a serem chamados do meu modelo)

def encrypt_attr(unencrypted)
    c = OpenSSL::Cipher.new("aes-256-cbc")
    c.encrypt
    c.key = Digest::SHA1.hexdigest('pass')
    e = c.update(unencrypted)
    e << c.final
    return e
end

def decrypt_attr(encrypted_attr)
  if encrypted_attr != ""
    c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
    c.decrypt
    c.key = Digest::SHA1.hexdigest('pass')
    d = c.update(encrypted_attr)
    d << c.final
    return d
  end
end

Lança exatamente o mesmo erro na descriptografia. Como devo fazer criptografia e descriptografia e não obter esse erro openss

questionAnswers(3)

yourAnswerToTheQuestion