Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Copyright 2012 Mirko Caserta
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this software except in compliance with the License.
   * You may obtain a copy of the License at
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
 package com.springcryptoutils.core.cipher.symmetric;
 import  org.apache.commons.codec.binary.Base64;
 import  org.springframework.beans.factory.InitializingBean;
The default implementation for performing symmetric encryption/decryption using base64 encoded versions of raw byte arrays and a static key.

Mirko Caserta (
 public class Base64EncodedCiphererWithStaticKeyImpl implements Base64EncodedCiphererWithStaticKey, InitializingBean {
 	private String keyAlgorithm = "DESede";
 	private String cipherAlgorithm = "DESede/CBC/PKCS5Padding";
 	private String charsetName = "UTF-8";
 	private String provider;
 	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 provider name of the specific implementation requested (e.g., "BC" for BouncyCastle, "SunJCE" for the default Sun JCE provider).

provider the provider to set
 	public void setProvider(String provider) {
 		this. = provider;

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 = ((( == null) || (.length() == 0))
			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