From 6a17c56410831124326bb677f0a2d51a920bfbe6 Mon Sep 17 00:00:00 2001 From: Keith Armstrong Date: Thu, 9 Jan 2025 19:24:06 -0500 Subject: [PATCH] Renamed class files --- .../belkast/soap/credentialsProcessor.java | 20 +++++ src/com/belkast/soap/encyptProcessor.java | 79 +++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 src/com/belkast/soap/credentialsProcessor.java create mode 100644 src/com/belkast/soap/encyptProcessor.java diff --git a/src/com/belkast/soap/credentialsProcessor.java b/src/com/belkast/soap/credentialsProcessor.java new file mode 100644 index 0000000..8d11b08 --- /dev/null +++ b/src/com/belkast/soap/credentialsProcessor.java @@ -0,0 +1,20 @@ +package com.belkast.soap; + +import java.io.Console; +import java.util.*; + +public class credentialsProcessor { + public static String getUsername(String thisPrompt) { + Scanner myObj = new Scanner(System.in); + System.out.print(thisPrompt); + String varEntry; + varEntry = myObj.nextLine(); + return varEntry; + } + + public static char[] getPassword(String thisPrompt) { + Console console = System.console(); + char[] password = console.readPassword(thisPrompt); + return password; + } +} \ No newline at end of file diff --git a/src/com/belkast/soap/encyptProcessor.java b/src/com/belkast/soap/encyptProcessor.java new file mode 100644 index 0000000..a83c8ba --- /dev/null +++ b/src/com/belkast/soap/encyptProcessor.java @@ -0,0 +1,79 @@ +package com.belkast.soap; + +import javax.crypto.*; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; +import java.io.UnsupportedEncodingException; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; +import java.util.Base64; + +public class encyptProcessor { + + private static final int KEY_LENGTH = 256; + private static final int ITERATION_COUNT = 65536; + + public static String encrypt(String strToEncrypt, String secretKey, String salt) throws InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeySpecException, BadPaddingException, InvalidKeyException { + + try { + + SecureRandom secureRandom = new SecureRandom(); + byte[] iv = new byte[16]; + secureRandom.nextBytes(iv); + IvParameterSpec ivspec = new IvParameterSpec(iv); + + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), ITERATION_COUNT, KEY_LENGTH); + SecretKey tmp = factory.generateSecret(spec); + SecretKeySpec secretKeySpec = new SecretKeySpec(tmp.getEncoded(), "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivspec); + + byte[] cipherText = cipher.doFinal(strToEncrypt.getBytes("UTF-8")); + byte[] encryptedData = new byte[iv.length + cipherText.length]; + System.arraycopy(iv, 0, encryptedData, 0, iv.length); + System.arraycopy(cipherText, 0, encryptedData, iv.length, cipherText.length); + + return Base64.getEncoder().encodeToString(encryptedData); + } catch (Exception e) { + throw e; + } + } + + public static String decrypt(String strToDecrypt, String secretKey, String salt) throws InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, UnsupportedEncodingException, BadPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException { + + try { + if (strToDecrypt == null) + { + return null; + } + + byte[] encryptedData = Base64.getDecoder().decode(strToDecrypt); + byte[] iv = new byte[16]; + System.arraycopy(encryptedData, 0, iv, 0, iv.length); + IvParameterSpec ivspec = new IvParameterSpec(iv); + + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), ITERATION_COUNT, KEY_LENGTH); + SecretKey tmp = factory.generateSecret(spec); + SecretKeySpec secretKeySpec = new SecretKeySpec(tmp.getEncoded(), "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivspec); + + byte[] cipherText = new byte[encryptedData.length - 16]; + System.arraycopy(encryptedData, 16, cipherText, 0, cipherText.length); + + byte[] decryptedText = cipher.doFinal(cipherText); + return new String(decryptedText, "UTF-8"); + } catch (Exception e) { + throw e; + } + } +} \ No newline at end of file