How to encrypt/decrypt columns in a Grails domain

2019-04-12 12:23发布

问题:

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?

回答1:

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).



回答2:

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/.



回答3:

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.



回答4:

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