Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. package com.danielme.demo.jaxws.cxf.client;
  2.  
  3. import java.security.AlgorithmParameters;
  4. import java.security.SecureRandom;
  5. import javax.crypto.BadPaddingException;
  6. import javax.crypto.Cipher;
  7. import javax.crypto.IllegalBlockSizeException;
  8. import javax.crypto.SecretKey;
  9. import javax.crypto.SecretKeyFactory;
  10. import javax.crypto.spec.IvParameterSpec;
  11. import javax.crypto.spec.PBEKeySpec;
  12. import javax.crypto.spec.SecretKeySpec;
  13. import org.apache.commons.codec.binary.Base64;
  14.  
  15. public class EncryptAES {
  16.  
  17. private static final String password = "cuentagotas12345";
  18. private static String salt;
  19. private static int pswdIterations = 65536 ;
  20. private static int keySize = 128;
  21. private byte[] ivBytes;
  22.  
  23. public String encrypt(String plainText) throws Exception {
  24.  
  25. //get salt
  26. salt = generateSalt();
  27. byte[] saltBytes = salt.getBytes("UTF-8");
  28.  
  29. // Derive the key
  30. SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
  31. PBEKeySpec spec = new PBEKeySpec(
  32. password.toCharArray(),
  33. saltBytes,
  34. pswdIterations,
  35. keySize
  36. );
  37.  
  38. SecretKey secretKey = factory.generateSecret(spec);
  39. SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
  40.  
  41. //encrypt the message
  42. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  43. cipher.init(Cipher.ENCRYPT_MODE, secret);
  44. AlgorithmParameters params = cipher.getParameters();
  45. ivBytes = params.getParameterSpec(IvParameterSpec.class).getIV();
  46. byte[] encryptedTextBytes = cipher.doFinal(plainText.getBytes("UTF-8"));
  47. return new Base64().encodeAsString(encryptedTextBytes);
  48. }
  49.  
  50. @SuppressWarnings("static-access")
  51. public String decrypt(String encryptedText) throws Exception {
  52.  
  53. byte[] saltBytes = salt.getBytes("UTF-8");
  54. byte[] encryptedTextBytes = new Base64().decodeBase64(encryptedText);
  55.  
  56. // Derive the key
  57. SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
  58. PBEKeySpec spec = new PBEKeySpec(
  59. password.toCharArray(),
  60. saltBytes,
  61. pswdIterations,
  62. keySize
  63. );
  64.  
  65. SecretKey secretKey = factory.generateSecret(spec);
  66. SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
  67.  
  68. // Decrypt the message
  69. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  70. cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(ivBytes));
  71.  
  72.  
  73. byte[] decryptedTextBytes = null;
  74. try {
  75. decryptedTextBytes = cipher.doFinal(encryptedTextBytes);
  76. } catch (IllegalBlockSizeException e) {
  77. e.printStackTrace();
  78. } catch (BadPaddingException e) {
  79. e.printStackTrace();
  80. }
  81.  
  82. return new String(decryptedTextBytes);
  83. }
  84.  
  85. public String generateSalt() {
  86. SecureRandom random = new SecureRandom();
  87. byte bytes[] = new byte[20];
  88. random.nextBytes(bytes);
  89. String s = new String(bytes);
  90. return s;
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement