Class HibernatePBEBigIntegerEncryptor

Object
org.jasypt.hibernate6.encryptor.HibernatePBEBigIntegerEncryptor

public final class HibernatePBEBigIntegerEncryptor extends Object

Placeholder class for PBEBigIntegerEncryptor objects which are eligible for use from Hibernate.

This class acts as a wrapper on a PBEBigIntegerEncryptor, 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 PBEBigIntegerEncryptor be explicitly set with setEncryptor(PBEBigIntegerEncryptor). If not, a StandardPBEBigIntegerEncryptor object will be created internally and it will be configurable with the setPassword(String)/setPasswordCharArray(char[]), setAlgorithm(String), setKeyObtentionIterations(int), setSaltGenerator(SaltGenerator), setIvGenerator(IvGenerator) 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:

  1. Create an object of this class (declaring it).
  2. Set its registeredName and, either its wrapped encryptor or its password, algorithm, keyObtentionIterations, saltGenerator, ivGenerator and config properties.
  3. Declare a typedef in a Hibernate mapping giving its encryptorRegisteredName parameter the same value specified to this object in registeredName.

This in a Spring config file would look like:

 
  ...
  <-- Optional, as the hibernateEncryptor could be directly set an     -->
  <-- algorithm and password.                                          -->
  <bean id="bigIntegerEncryptor"
    class="org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor">
    <property name="algorithm">
        <value>PBEWithMD5AndDES</value>
    </property>
    <property name="password">
        <value>XXXXX</value>
    </property>
  </bean>
  
  <bean id="hibernateEncryptor"
    class="org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor">
    <property name="registeredName">
        <value>myHibernateBigIntegerEncryptor</value>
    </property>
    <property name="encryptor">
        <ref bean="bigIntegerEncryptor" />
    </property>
  </bean>
  ...
 

And then in the Hibernate mapping file:

    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
    </typedef>
 

An important thing to note is that, when using HibernatePBEBigIntegerEncryptor objects this way to wrap PBEBigIntegerEncryptors, it is not necessary to deal with HibernatePBEEncryptorRegistry, because HibernatePBEBigIntegerEncryptor objects get automatically registered in the encryptor registry when their setRegisteredName(String) method is called.

Since:
1.9.0
Author:
Chus Picos
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new instance of HibernatePBEBigIntegerEncryptor It also creates a StandardPBEBigIntegerEncryptor for internal use, which can be overriden by calling setEncryptor(...).
  • Method Summary

    Modifier and Type
    Method
    Description
    decrypt(BigInteger encryptedMessage)
    Decypts a message, delegating to wrapped encryptor
    Encrypts a message, delegating to wrapped encryptor.
    org.jasypt.encryption.pbe.PBEBigIntegerEncryptor
    Returns the encryptor which this object wraps.
    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.PBEBigIntegerEncryptor encryptor)
    Sets the PBEBigIntegerEncryptor 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
    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(...).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • HibernatePBEBigIntegerEncryptor

      public HibernatePBEBigIntegerEncryptor()
      Creates a new instance of HibernatePBEBigIntegerEncryptor It also creates a StandardPBEBigIntegerEncryptor for internal use, which can be overriden by calling setEncryptor(...).
  • Method Details

    • getEncryptor

      public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getEncryptor()
      Returns the encryptor which this object wraps.
      Returns:
      the encryptor.
    • setEncryptor

      public void setEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
      Sets the PBEBigIntegerEncryptor to be held (wrapped) by this object. This method is optional and can be only called once.
      Parameters:
      encryptor - the encryptor.
    • setPassword

      public void setPassword(String password)
      Sets the password to be used by the internal encryptor, if a specific encryptor has not been set with setEncryptor(...).
      Parameters:
      password - the password to be set for the internal encryptor
    • setPasswordCharArray

      public 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(...).
      Parameters:
      password - the password to be set for the internal encryptor
      Since:
      1.8
    • setAlgorithm

      public void setAlgorithm(String algorithm)
      Sets the algorithm to be used by the internal encryptor, if a specific encryptor has not been set with setEncryptor(...).
      Parameters:
      algorithm - the algorithm to be set for the internal encryptor
    • setKeyObtentionIterations

      public 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(...).
      Parameters:
      keyObtentionIterations - to be set for the internal encryptor
    • setSaltGenerator

      public 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(...).
      Parameters:
      saltGenerator - the salt generator to be set for the internal encryptor.
    • setIvGenerator

      public 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(...).
      Parameters:
      ivGenerator - the IV generator to be set for the internal encryptor.
    • setConfig

      public 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(...).
      Parameters:
      config - the PBEConfig to be set for the internal encryptor
    • encrypt

      public BigInteger encrypt(BigInteger message)
      Encrypts a message, delegating to wrapped encryptor.
      Parameters:
      message - the message to be encrypted.
      Returns:
      the encryption result.
    • decrypt

      public BigInteger decrypt(BigInteger encryptedMessage)
      Decypts a message, delegating to wrapped encryptor
      Parameters:
      encryptedMessage - the message to be decrypted.
      Returns:
      the result of decryption.
    • setRegisteredName

      public void setRegisteredName(String registeredName)
      Sets the registered name of the encryptor and adds it to the registry.
      Parameters:
      registeredName - the name with which the encryptor will be registered.
    • getRegisteredName

      public String getRegisteredName()
      Returns the name with which the wrapped encryptor is registered at the registry.
      Returns:
      the registered name.