Just to you know, I had to go back behind here and pass passphrase instead PrivateKey for storing the salt needed to recreate the key when the User type the password again.

```
byte[] iv = new Random().randomBytes();
byte[] salt = new Random().randomBytes();
byte[] rawPassword = new byte[0];

try {
    Pbkdf2 pbkdf2 = new Pbkdf2();
    rawPassword = pbkdf2.encrypt(passphrase, salt);
} catch (InvalidKeySpecException e) {
}

PrivateKey privateKey = new PrivateKey(rawPassword);
cryptoUtils = new CryptoUtils<T>(privateKey, iv, modelClass);
```