Java Tokenization с помощью Gradle - PullRequest
       2

Java Tokenization с помощью Gradle

0 голосов
/ 12 ноября 2018

В моем текущем проекте я работаю над подключением к базе данных MySQL с использованием Java.

У меня есть немного кода, в котором я использую Gradle для замены конфиденциальных учетных данных базы данных в файл .java, используя ReplaceTokens, чтобы заполнить новую версию файла в каталоге сборки и получить исходную версию (с заменой). детоксицированные "значения), чтобы скомпилировать файл .class.

Я не ожидаю, что кто-то кроме основной команды разработчиков будет работать с исходными файлами .java, кроме .war, который содержит скомпилированные файлы .class. Однако, посмотрев на эти файлы .class с помощью vim, я могу сказать, что детоксицированные значения четко видны в скомпилированном байт-коде.

Мой вопрос таков: Если предположить, что мои файлы .class могут быть извлечены с сервера потенциально вредоносным агентом, есть ли лучший способ токенизации, который обеспечил бы еще один уровень безопасности для учетных данных базы данных?

Для получения дополнительной информации доступ к БД MySQL возможен только через сокет, поэтому я не ожидаю, что злонамеренный агент сможет что-либо сделать с одними только учетными данными БД, но я бы все же хотел усложнить определение этих учетных данных. .

Спасибо за любой совет! Я все еще очень плохо знаком с Java и Gradle в целом, но этот проект уже дал мне много понимания того, что можно сделать.

1 Ответ

0 голосов
/ 13 ноября 2018

Вот простой код, который выполняет кодирование / декодирование base64

Я использую Blowfish для algo

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public static String encrypt(String text) throws Exception
{
    SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), algo );
    Cipher cipher = Cipher.getInstance(algo);
    cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, sksSpec);

    byte[] encrypt_bytes = cipher.doFinal(text.getBytes());
    return new String( Base64.encodeBase64(encrypt_bytes) );
}

public static String decrypt(String encrypt_str) throws Exception
{
    SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), algo);
    Cipher cipher = Cipher.getInstance(algo);
    cipher.init(Cipher.DECRYPT_MODE, sksSpec);

    return new String(cipher.doFinal( Base64.decodeBase64(encrypt_str.getBytes("UTF-8"))));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...