Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.danielme.demo.jaxws.cxf.client;
- import java.security.AlgorithmParameters;
- import java.security.SecureRandom;
- import javax.crypto.BadPaddingException;
- import javax.crypto.Cipher;
- import javax.crypto.IllegalBlockSizeException;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.PBEKeySpec;
- import javax.crypto.spec.SecretKeySpec;
- import org.apache.commons.codec.binary.Base64;
- public class EncryptAES {
- private static final String password = "cuentagotas12345";
- private static String salt;
- private static int pswdIterations = 65536 ;
- private static int keySize = 128;
- private byte[] ivBytes;
- public String encrypt(String plainText) throws Exception {
- //get salt
- salt = generateSalt();
- byte[] saltBytes = salt.getBytes("UTF-8");
- // Derive the key
- SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
- PBEKeySpec spec = new PBEKeySpec(
- password.toCharArray(),
- saltBytes,
- pswdIterations,
- keySize
- );
- SecretKey secretKey = factory.generateSecret(spec);
- SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
- //encrypt the message
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- cipher.init(Cipher.ENCRYPT_MODE, secret);
- AlgorithmParameters params = cipher.getParameters();
- ivBytes = params.getParameterSpec(IvParameterSpec.class).getIV();
- byte[] encryptedTextBytes = cipher.doFinal(plainText.getBytes("UTF-8"));
- return new Base64().encodeAsString(encryptedTextBytes);
- }
- @SuppressWarnings("static-access")
- public String decrypt(String encryptedText) throws Exception {
- byte[] saltBytes = salt.getBytes("UTF-8");
- byte[] encryptedTextBytes = new Base64().decodeBase64(encryptedText);
- // Derive the key
- SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
- PBEKeySpec spec = new PBEKeySpec(
- password.toCharArray(),
- saltBytes,
- pswdIterations,
- keySize
- );
- SecretKey secretKey = factory.generateSecret(spec);
- SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
- // Decrypt the message
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(ivBytes));
- byte[] decryptedTextBytes = null;
- try {
- decryptedTextBytes = cipher.doFinal(encryptedTextBytes);
- } catch (IllegalBlockSizeException e) {
- e.printStackTrace();
- } catch (BadPaddingException e) {
- e.printStackTrace();
- }
- return new String(decryptedTextBytes);
- }
- public String generateSalt() {
- SecureRandom random = new SecureRandom();
- byte bytes[] = new byte[20];
- random.nextBytes(bytes);
- String s = new String(bytes);
- return s;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement