// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package com.amalto.workbench.utils;
import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
import org.talend.utils.security.CryptoHelper;
public class PasswordUtil {
private static Logger log = Logger.getLogger(PasswordUtil.class);
public static final String ALGORITHM_COMMON = "Common"; //$NON-NLS-1$
public static final String ALGORITHM_COMMON_V2 = "CommonV2"; //$NON-NLS-1$
public static String decryptPassword(String encodedPassword, String algorithm) {
if (encodedPassword == null) {
throw new IllegalArgumentException();
}
if (algorithm != null) {
if (algorithm.equals(ALGORITHM_COMMON_V2)) {
try {
String decryptedPassword = CryptoHelper.getDefault().decrypt(encodedPassword);
return decryptedPassword;
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} else if (algorithm.equals(ALGORITHM_COMMON)) {
// not support ALGORITHM_COMMON ,it will be upgraded by migration task
return null;
}
}
return decryptPasswordBase64(encodedPassword);
}
public static String decryptPassword(String encodedPassword) {
return decryptPassword(encodedPassword, ALGORITHM_COMMON_V2);
}
public static String decryptPasswordBase64(String encodedPassword) {
Base64 base64 = new Base64();
byte[] debytes = null;
String decodeStr = null;
debytes = base64.decode(encodedPassword.getBytes());
decodeStr = new String(debytes);
return decodeStr;
}
public static String encryptPassword(String plainPassword, String algorithm) {
if (plainPassword == null) {
throw new IllegalArgumentException();
}
if (algorithm != null) {
if (algorithm.equals(ALGORITHM_COMMON_V2)) {
try {
return CryptoHelper.getDefault().encrypt(plainPassword);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} else if (algorithm.equals(ALGORITHM_COMMON)) {
// not support ALGORITHM_COMMON ,it will be upgraded by migration task
return null;
}
}
return encryptPasswordBase64(plainPassword);
}
public static String encryptPassword(String plainPassword) {
return encryptPassword(plainPassword, ALGORITHM_COMMON_V2);
}
public static String encryptPasswordBase64(String plainPassword) {
Base64 base64 = new Base64();
byte[] enbytes = null;
String encodeStr = null;
enbytes = base64.encode(plainPassword.getBytes());
encodeStr = new String(enbytes);
return encodeStr;
}
public static void main(String args[]) {
Base64 base64 = new Base64();
String str = "qwe";//$NON-NLS-1$
byte[] enbytes = null;
String encodeStr = null;
byte[] debytes = null;
String decodeStr = null;
enbytes = base64.encode(str.getBytes());
encodeStr = new String(enbytes);
debytes = base64.decode(enbytes);
decodeStr = new String(debytes);
System.out.println("plain password:" + str); //$NON-NLS-1$
System.out.println("encrypted password:" + encodeStr); //$NON-NLS-1$
System.out.println("decrypted password:" + decodeStr); //$NON-NLS-1$
}
}