public final class HibernatePBEStringEncryptor extends Object
Placeholder class for PBEStringEncryptor objects which are eligible for use from Hibernate.
This class acts as a wrapper on a PBEStringEncryptor, allowing
to be set a registered name (see setRegisteredName(String)
)
and performing the needed registry operations against the
HibernatePBEEncryptorRegistry
.
It is not mandatory that a PBEStringEncryptor be explicitly set
with setEncryptor(PBEStringEncryptor)
. If not, a
StandardPBEStringEncryptor object will be created internally
and it will be configurable with the
setPassword(String)
/setPasswordCharArray(char[])
,
setAlgorithm(String)
, setKeyObtentionIterations(int)
,
setSaltGenerator(SaltGenerator)
, setIvGenerator(IvGenerator)
,
setProviderName(String)
,
setProvider(Provider)
, setStringOutputType(String)
and setConfig(PBEConfig)
methods.
This class is mainly intended for use from Spring Framework or some other
IoC container (if you are not using a container of this kind, please see
HibernatePBEEncryptorRegistry
). The steps to be performed are
the following:
This in a Spring config file would look like:
... <-- Optional, as the hibernateEncryptor could be directly set an --> <-- algorithm and password. --> <bean id="stringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="algorithm"> <value>PBEWithMD5AndDES</value> </property> <property name="password"> <value>XXXXX</value> </property> </bean> <bean id="hibernateEncryptor" class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor"> <property name="registeredName"> <value>myHibernateStringEncryptor</value> </property> <property name="encryptor"> <ref bean="stringEncryptor" /> </property> </bean> ...
And then in the Hibernate mapping file:
<typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedStringType"> <param name="encryptorRegisteredName">myHibernateStringEncryptor</param> </typedef>
An important thing to note is that, when using HibernatePBEStringEncryptor
objects this way to wrap PBEStringEncryptors, it is not
necessary to deal with HibernatePBEEncryptorRegistry
,
because HibernatePBEStringEncryptor objects get automatically registered
in the encryptor registry when their setRegisteredName(String)
method is called.
Constructor and Description |
---|
HibernatePBEStringEncryptor()
Creates a new instance of HibernatePBEStringEncryptor.
|
Modifier and Type | Method and Description |
---|---|
String |
decrypt(String encryptedMessage)
Decypts a message, delegating to wrapped encryptor
|
String |
encrypt(String message)
Encrypts a message, delegating to wrapped encryptor.
|
org.jasypt.encryption.pbe.PBEStringEncryptor |
getEncryptor()
Returns the encryptor which this object wraps.
|
String |
getRegisteredName()
Returns the name with which the wrapped encryptor is registered at
the registry.
|
void |
setAlgorithm(String algorithm)
Sets the algorithm to be used by the internal encryptor, if a specific
encryptor has not been set with setEncryptor(...)
|
void |
setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
Sets the PBEConfig to be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
void |
setEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
Sets the PBEStringEncryptor to be held (wrapped) by this
object.
|
void |
setIvGenerator(org.jasypt.iv.IvGenerator ivGenerator)
Sets the IV generator to be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
void |
setKeyObtentionIterations(int keyObtentionIterations)
Sets the key obtention iterations to be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
void |
setPassword(String password)
Sets the password to be used by the internal encryptor, if a specific
encryptor has not been set with setEncryptor(...)
|
void |
setPasswordCharArray(char[] password)
Sets the password to be used by the internal encryptor (as a char[]), if a specific
encryptor has not been set with setEncryptor(...)
|
void |
setProvider(Provider provider)
Sets the JCE provider to be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
void |
setProviderName(String providerName)
Sets the name of the JCE provider to be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
void |
setRegisteredName(String registeredName)
Sets the registered name of the encryptor and adds it to the registry.
|
void |
setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
Sets the salt generator to be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
void |
setStringOutputType(String stringOutputType)
Sets the type of String output ("base64" (default), "hexadecimal") to
be used by the internal encryptor,
if a specific encryptor has not been set with setEncryptor(...)
|
public HibernatePBEStringEncryptor()
public org.jasypt.encryption.pbe.PBEStringEncryptor getEncryptor()
public void setEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
encryptor
- the encryptor.public void setPassword(String password)
password
- the password to be set for the internal encryptorpublic void setPasswordCharArray(char[] password)
password
- the password to be set for the internal encryptorpublic void setAlgorithm(String algorithm)
algorithm
- the algorithm to be set for the internal encryptorpublic void setKeyObtentionIterations(int keyObtentionIterations)
keyObtentionIterations
- to be set for the internal encryptorpublic void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
saltGenerator
- the salt generator to be set for the internal
encryptor.public void setIvGenerator(org.jasypt.iv.IvGenerator ivGenerator)
ivGenerator
- the IV generator to be set for the internal
encryptor.public void setProviderName(String providerName)
providerName
- the name of the JCE provider (already registered)public void setProvider(Provider provider)
provider
- the JCE provider to be usedpublic void setStringOutputType(String stringOutputType)
stringOutputType
- the type of String outputpublic void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
config
- the PBEConfig to be set for the internal encryptorpublic String encrypt(String message)
message
- the message to be encrypted.public String decrypt(String encryptedMessage)
encryptedMessage
- the message to be decrypted.public void setRegisteredName(String registeredName)
registeredName
- the name with which the encryptor will be
registered.public String getRegisteredName()
Copyright © 2019 The JASYPT team. All rights reserved.