As i want to introduce some data security i was wondering if it is possible to encrypt/decrypt specific columns in a Grails domain class and if so what the easiest way is to achieve such a thing?
Let say i have a User class and want to encrypt ssn number or bankaccount number so these are not stored as plain text in the DB.. what would be the best approach?
I created the jasypt encryption plugin for doing exactly this. Docs are on the linked bitbucket wiki and there's also slides from a presentation that I've given on it's use.
It makes it easy to just annotate your domain classes to do field level encryption on the fields you want to protect (by default with the Bouncy Castle AES encryption provider).
Hibernate user types can transform to and from another format for storage to transparently encrypt the column.
Here's a simple implementation for grails: http://www.redtoad.ca/ataylor/2011/12/encrypting-a-database-column-in-grails/.
Override the get/set methods for the domain property to encrypt going in and decrypt coming out. You'll just need to choose the right crypto algorithm. Obviously, make sure you choose one that is 2-way.
class Login{
String userId
String password
static mapping = {
userId type: GormEncryptedStringType
password type: GormEncryptedStringType
}
}
read more here:-
http://www.slideshare.net/tednaleid/grails-jasypt-encryption-plugin