Я работаю над клиентским / серверным приложением java. Каждый пользователь должен иметь возможность создавать и изменять файлы (содержащие некоторые конфиденциальные данные) через клиентское приложение (помечая их цифровой подписью) или вручную (помечая их как ошибочную подпись с вероятностью 99,9999%). Подпись не использует идентификационные данные клиента, только содержимое файла, что означает, что два удаленных клиента, создающие один и тот же файл, в итоге получат два файла с одинаковой подписью).
После того, как я сделал плюсы и минусы, я подумал об использовании запутывания для защиты от злонамеренных пользователей, а не об использовании обратного инжиниринга для поиска алгоритма доставки цифровой подписи для данного файла.
Но если я правильно понял, запутывание делает код труднее для понимания человеком, труднее для понимания, но моя цель больше скрыть алгоритм за цифровой подписью. Любая идея о том, как это сделать:
- Трудно читать?
- Трудно найти?
На данный момент моя идея такова:
- Использование очень случайных имен и некоторых бесполезных обработок
- Поместить его в случайный класс в случайном месте и использовать вещи из случайных мест
- Удалить комментарии
- Рандомизировать
Также я не уверен, что понимаю, как работает компиляция и обратный инжиниринг.
Когда код компилируется, я когда-либо думал, что переменные были названы в « области метода », и что обратный инжиниринг вернет нам код с переменными с именами a, b, c ... и т. д. Но, похоже, дело обстоит не так, и теперь имеет смысл подумать об этом, поскольку в java возможно размышление, Прав ли я в этой последней части?
В заключение я не уверен, что понимаю, как это помешает пользователю перевернуть мой код (за исключением части имен переменных).