Есть несколько способов справиться с этим. Если вы можете найти способ, чтобы пользователь предоставлял пароль для хранилища ключей при запуске приложения, наиболее подходящим способом было бы зашифровать все значения с помощью ключа и сохранить этот ключ в хранилище ключей. Интерфейс командной строки для хранилища ключей осуществляется с помощью keytool. Однако у JSE есть API для программного доступа к хранилищу ключей.
Если у вас нет возможности заставить пользователя вручную вводить пароль для хранилища ключей при запуске (скажем, для веб-приложения), один из способов сделать это - написать исключительно сложную процедуру запутывания, которая может запутать ключ и сохраните это также в файле свойств. Важно помнить, что логика запутывания и деобфускации должна быть многослойной (может включать в себя скремблирование, кодирование, ввод ложных символов и т. Д. И т. Д.), И сама должна иметь хотя бы один ключ, который может быть скрыт в других классах приложения используя неинтуитивные имена. Это не полностью безопасный механизм, так как кто-то с декомпилятором и достаточным количеством времени и интеллекта все еще может обходить его, но я знаю только об одном, который не требует, чтобы вы взламывали собственный (то есть не легко декомпилируемый) код .