2016-10-18 6 views
0

Я даже не знаю, возможно ли это.Шифрование строки внутри кода (JAPH)

СЦЕНАРИЙ:

У меня есть мастер-ключ для KeyStore внутри моего Кодекса. Что-то вроде

private static final char[] pwd = "password".toCharArray(); 

Я должен защищать свой «пароль» также в декомпиляции. Я имею в виду, по крайней мере, попробую что-то вроде JAPH

Я прекрасно знаю, что сделать мой пароль безопасным и нечитаемым, но, по крайней мере, я хотел бы сделать как можно больше.

+0

Вы правы, единственным безопасным местом для ввода пароля является мозг человека. Но вы можете усложнить чтение путем преобразования его побитовым в HEX-номера или кодировку base64 (или их комбинацию). Еще одной идеей будет XOR с определением даты создания файлов, но это может быть хрупким. –

ответ

1

Первый способ заключается в том, чтобы распространять пароль в отдельном файле и читать их во время выполнения через Properties API. Легко и просто. Если вы добавите некоторую кодировку base64, это защитит вас от детей сценария. Публикационный исходный код будет раскрывать только способ хранения пароля. Конечно, утечка кода и файла по-прежнему является проблемой.

Второй метод очень похож. Сохраните пароль как переменную среды и прочитайте их через System.env. В этом случае для того, чтобы знать, что злоумышленник пароля должен получить доступ к ОС, чтобы прочитать пароль. Это делает его немного сложнее.

Третий способ заключается в двухэтапный пароль. Первый пароль, который вы храните с использованием второго метода, - это пароль к зашифрованному файлу AES, который содержит основной пароль.

В нашем проекте мы используем второй метод. Это защищает нас от разоблачения пароля, если код протекает (как-то), однако, если кто-то нарушает безопасность сервера, тогда ... тогда у нас будет гораздо более серьезная проблема, чем утечка пароля.

пс. вы можете попытаться сыграть с Honey Encription, чтобы сделать его немного сложнее. Атакующий не знает, что у него действующий пароль или просто что-то похожее.

Смежные вопросы