Rev 2146 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.utils;import java.io.UnsupportedEncodingException;import java.security.spec.AlgorithmParameterSpec;import java.security.spec.KeySpec;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.PBEParameterSpec;import org.apache.commons.codec.binary.Base64;import org.apache.log4j.Logger;public class DesEncrypter {private static Logger logger = Logger.getLogger(DesEncrypter.class);Cipher ecipher;Cipher dcipher;// 8-byte Saltbyte[] salt = { (byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32,(byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03 };// Iteration countint iterationCount = 19;public DesEncrypter(String passPhrase) {try {// Create the keyKeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt,iterationCount);SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);ecipher = Cipher.getInstance(key.getAlgorithm());dcipher = Cipher.getInstance(key.getAlgorithm());// Prepare the parameter to the ciphersAlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);// Create the ciphersecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);} catch (java.security.InvalidAlgorithmParameterException e) {logger.error("Unable to initialize the cipher", e);} catch (java.security.spec.InvalidKeySpecException e) {logger.error("Unable to initialize the cipher", e);} catch (javax.crypto.NoSuchPaddingException e) {logger.error("Unable to initialize the cipher", e);} catch (java.security.NoSuchAlgorithmException e) {logger.error("Unable to initialize the cipher", e);} catch (java.security.InvalidKeyException e) {logger.error("Unable to initialize the cipher", e);}}public String encrypt(String str) {try {// Encode the string into bytes using utf-8byte[] utf8 = str.getBytes("UTF8");// Encryptbyte[] enc = ecipher.doFinal(utf8);// Encode bytes to base64 to get a stringreturn Base64.encodeBase64URLSafeString(enc);} catch (javax.crypto.BadPaddingException e) {logger.error("Encryption failed because of bad padding", e);} catch (IllegalBlockSizeException e) {logger.error("Encryption failed because of illegal block size", e);} catch (UnsupportedEncodingException e) {logger.error("Encryption failed because the underlying encoding is unsupported", e);}return null;}public String decrypt(String str) {try {// Decode base64 encoded string to get bytesbyte[] dec = Base64.decodeBase64(str);// Decryptbyte[] utf8 = dcipher.doFinal(dec);// Decode using utf-8return new String(utf8, "UTF8");} catch (javax.crypto.BadPaddingException e) {logger.error("Encryption failed because of bad padding", e);} catch (IllegalBlockSizeException e) {logger.error("Encryption failed because of illegal block size", e);} catch (UnsupportedEncodingException e) {logger.error("Encryption failed because the underlying encoding is unsupported", e);}return null;}public static void main(String[] args){DesEncrypter desEncrypter = new DesEncrypter("shop2020");System.out.println(desEncrypter.decrypt("BVl-z9SkaLo"));}}