Использование зашифрованного пароля для подключения к базе данных в весенней загрузке веб-приложения без использования jasypt - PullRequest
0 голосов
/ 15 октября 2019

По соображениям безопасности я не могу использовать инструмент 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...