По соображениям безопасности я не могу использовать инструмент jasypt.
Итак, я создаю библиотеку, которая будет принимать пароль БД от пользователя и шифровать его.
Теперь, если я хочу использоватьэтот зашифрованный пароль в моем файле application.properties, как я могу расшифровать пароль.
Шифрование Реализация
private static final Charset UTF_8 = StandardCharsets.UTF_8;
/** The Constant KEY. */
private static final String KEY = "SomePassworddKey";
/** The Constant INIT_VECTOR. */
private static final String INIT_VECTOR = "encryptionIntVec";
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the Database Password :");
String dbPassword = scanner.next();
String encryptedString = null;
try {
encryptedString = encrypt(dbPassword);
} catch (Exception e) {
System.out.println(e.getMessage());
scanner.close();
}
System.out.println(encryptedString);
}
private static String encrypt(String value) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
IvParameterSpec iv = new IvParameterSpec(INIT_VECTOR.getBytes(UTF_8));
SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes(UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.encodeBase64String(encrypted);
}