Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package stream.data;
  
  import java.util.UUID;
  
 
 
 import stream.Data;

Author(s):
chris
 
 public class Encrypt extends AbstractProcessor {
 
 	static Logger log = LoggerFactory.getLogger(Encrypt.class);
 
 	public final static String ID_KEY = "encrypted:id";
 	public final static String CIPHER_KEY = "encrypted:cipher";
 	public final static String DATA_KEY = "encrypted:data";
 	public final static String SERIALIZER_KEY = "serializer:class";
 
 	String cipher = "AES/CBC/PKCS5Padding";

 
 	public void init(ProcessContext ctxthrows Exception {
 		super.init(ctx);
 
 		if ( == null) {
 			throw new Exception("No 'secret' parameter specified!");
 		}
 
 		if (.trim().isEmpty()) {
 			throw new Exception(
 					"Parameter 'secret' does not contain any information!");
 		}
 
 		try {
 			.debug("Initializing cipher for '{}'");
 			Cipher c = Cipher.getInstance(this.);
 			.debug("Cipher initialized: {}"c);
 		} catch (Exception e) {
 			.error("Failed to initialized cipher '" + this. + "': "
 					+ e.getMessage());
 			throw new Exception("Failed to initialized cipher '" + this.
 					+ "': " + e.getMessage());
 		}
 	}

 
 	public Data process(Data input) {
 
 		UUID uuid = UUID.randomUUID();
 		String id = uuid.toString();
 		Data enc = DataFactory.create();
 
 		byte[] ivData = computeIV(id);
 		enc.put(id);
 
 		try {
 
 			.write(inputbaos);
 			baos.flush();
 			baos.close();
 			byte[] data = baos.toByteArray();
 
 			Cipher c = Cipher.getInstance();
 					"AES");
 			IvParameterSpec iv = new IvParameterSpec(ivData);
 			c.init(.keyiv);
 
 			data = c.doFinal(data);
 			enc.put(this.);
 			enc.put(data);
 			.debug("Encrypted serialized item into {} bytes"data.length);
catch (Exception e) {
			.error("Encryption failed: {}"e.getMessage());
			return null;
		}
		return enc;
	}

Returns:
the secret
	public String getSecret() {
		return ;
	}

Parameters:
secret the secret to set
	public void setSecret(String secret) {
		this. = secret;
	}
	public static byte[] computeIV(String idString secret) {
		String from = MD5.md5(id + secret);
		byte[] ivData = new byte[16];
		for (int i = 0; i < ivData.lengthi++) {
			if (i < from.length()) {
				ivData[i] = (bytefrom.charAt(i);
else {
				ivData[i] = 0;
			}
		}
		return ivData;
	}
New to GrepCode? Check out our FAQ X