summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java')
-rw-r--r--ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java141
1 files changed, 60 insertions, 81 deletions
diff --git a/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java b/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java
index 3a13e362..926ed347 100644
--- a/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java
+++ b/ecomp-sdk/epsdk-core/src/main/java/org/onap/portalsdk/core/util/EncDecUtilTest.java
@@ -6,7 +6,7 @@
* ===================================================================
*
* Unless otherwise specified, all software contained herein is licensed
- * under the Apache License, Version 2.0 (the “License”);
+ * under the Apache License, Version 2.0 (the "License");
* you may not use this software except in compliance with the License.
* You may obtain a copy of the License at
*
@@ -19,7 +19,7 @@
* limitations under the License.
*
* Unless otherwise specified, all documentation contained herein is licensed
- * under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
* you may not use this documentation except in compliance with the License.
* You may obtain a copy of the License at
*
@@ -36,12 +36,13 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
package org.onap.portalsdk.core.util;
+
+import java.io.UnsupportedEncodingException;
import java.security.AlgorithmParameters;
+import java.security.GeneralSecurityException;
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;
@@ -49,82 +50,60 @@ import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
-
+
public class EncDecUtilTest {
-
- private static final String password = "test";
- private static final String salt = "r n�HN~��|f��X�" ;
- private static int pswdIterations = 65536 ;
- private static int keySize = 256;
- 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;
- }
+
+ private static final String WORD = "test";
+ private static final String SALT = "r n�HN~��|f��X�";
+ private static final int ITERATIONS = 65536;
+ private static final int KEY_SIZE = 256;
+ private byte[] ivBytes;
+
+ public String encrypt(String plainText) throws UnsupportedEncodingException, GeneralSecurityException {
+
+ // get salt
+ // salt = generateSalt();
+ byte[] saltBytes = SALT.getBytes("UTF-8");
+
+ // Derive the key
+ SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+ PBEKeySpec spec = new PBEKeySpec(WORD.toCharArray(), saltBytes, ITERATIONS, KEY_SIZE);
+
+ 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 Base64.encodeBase64String(encryptedTextBytes);
+ }
+
+ public String decrypt(String encryptedText) throws UnsupportedEncodingException, GeneralSecurityException {
+ byte[] saltBytes = SALT.getBytes("UTF-8");
+ byte[] encryptedTextBytes = Base64.decodeBase64(encryptedText);
+
+ // Derive the key
+ SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+ PBEKeySpec spec = new PBEKeySpec(WORD.toCharArray(), saltBytes, ITERATIONS, KEY_SIZE);
+
+ 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 = cipher.doFinal(encryptedTextBytes);
+ return new String(decryptedTextBytes);
+ }
+
+ public String generateSalt() {
+ SecureRandom random = new SecureRandom();
+ byte [] bytes = new byte[20];
+ random.nextBytes(bytes);
+ return new String(bytes);
+ }
} \ No newline at end of file