001 /****************************************************************
002 * Licensed to the Apache Software Foundation (ASF) under one *
003 * or more contributor license agreements. See the NOTICE file *
004 * distributed with this work for additional information *
005 * regarding copyright ownership. The ASF licenses this file *
006 * to you under the Apache License, Version 2.0 (the *
007 * "License"); you may not use this file except in compliance *
008 * with the License. You may obtain a copy of the License at *
009 * *
010 * http://www.apache.org/licenses/LICENSE-2.0 *
011 * *
012 * Unless required by applicable law or agreed to in writing, *
013 * software distributed under the License is distributed on an *
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
015 * KIND, either express or implied. See the License for the *
016 * specific language governing permissions and limitations *
017 * under the License. *
018 ****************************************************************/
019 package org.apache.james.mailbox.jpa.mail.model.openjpa;
020
021 import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
022
023 /**
024 * Helper class for encrypt and de-crypt data
025 *
026 *
027 */
028 public class EncryptDecryptHelper {
029
030 // Use one static instance as it is thread safe
031 private static StandardPBEByteEncryptor encryptor = new StandardPBEByteEncryptor();
032
033
034 /**
035 * Set the password for encrypt / de-crypt. This MUST be done before
036 * the usage of {@link #getDecrypted(byte[])} and {@link #getEncrypted(byte[])}.
037 *
038 * So to be safe its the best to call this in a constructor
039 *
040 * @param pass
041 */
042 public static void init(String pass) {
043 encryptor.setPassword(pass);
044 }
045
046 /**
047 * Encrypt the given array and return the encrypted one
048 *
049 * @param array
050 * @return enc-array
051 */
052 public static byte[] getEncrypted(byte[] array) {
053 return encryptor.encrypt(array);
054 }
055
056 /**
057 * Decrypt the given array and return the de-crypted one
058 *
059 * @param array
060 * @return dec-array
061 */
062 public static byte[] getDecrypted(byte[] array) {
063 return encryptor.decrypt(array);
064 }
065
066 }