Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
The default implementation for performing symmetric encryption/decryption using base64 encoded versions of raw byte arrays and a static key.

Mirko Caserta (
     private String keyAlgorithm = "DESede";
     private String cipherAlgorithm = "DESede/CBC/PKCS5Padding";
     private String charsetName = "UTF-8";
     private Mode mode;
     private String key;
     private SecretKeySpec keySpec;
     private boolean chunkOutput;

The symmetric key algorithm. The default is DESede (triple DES).

keyAlgorithm the symmetric key algorithm
     public void setKeyAlgorithm(String keyAlgorithm) {
         this. = keyAlgorithm;

The cipher algorithm. The default is DESede/CBC/PKCS5Padding (triple DES with Cipher Block Chaining and PKCS 5 padding).

cipherAlgorithm the cipher algorithm
     public void setCipherAlgorithm(String cipherAlgorithm) {
         this. = cipherAlgorithm;

The charset to use when converting a string into a raw byte array representation. The default is UTF-8.

charsetName the charset name (default: UTF-8)
     public void setCharsetName(String charsetName) {
         this. = charsetName;

Sets the encryption/decryption mode.

mode the encryption/decryption mode
     public void setMode(Mode mode) {
         this. = mode;

When outputting long base64 encoded strings, should the output be formatted so it's easier to read? This may not work well with some base64 decoders which don't accept whitespace in the input so the default is false.

chunkOutput should the output be formatted?
     public void setChunkOutput(boolean chunkOutput) {
         this. = chunkOutput;

A base64 encoded representation of the raw byte array containing the initialization vector.

initializationVector the initialization vector
     public void setInitializationVector(String initializationVector) {
         this. = new IvParameterSpec(Base64.decodeBase64(initializationVector));

A base64 encoded representation of the raw byte array containing the cryptographic key.

key the cryptographic key
     public void setKey(String key) {
         this. = key;

Encrypts/decrypts a message using the underlying symmetric key and mode.

message if in encryption mode, the clear-text message to encrypt, otherwise a base64 encoded version of the raw byte array containing the message to decrypt
if in encryption mode, returns a base64 encoded version of the encrypted message, otherwise returns the clear-text message
SymmetricEncryptionException on runtime errors
See also:
    public String encrypt(String message) {
        try {
            final Cipher cipher = Cipher.getInstance();
            switch () {
                case :
                    byte[] encryptedMessage = cipher.doFinal(message.getBytes());
                    return new String(Base64.encodeBase64(encryptedMessage));
                case :
                    byte[] decodedMessage = Base64.decodeBase64(message);
                    return new String(cipher.doFinal(decodedMessage), );
                    return null;
        } catch (Exception e) {
            throw new SymmetricEncryptionException("error encrypting/decrypting message; mode=" + e);
    public void afterPropertiesSet() {
        this. = new SecretKeySpec(Base64.decodeBase64(), );
New to GrepCode? Check out our FAQ X