Я разрабатываю игру, и мне нужно сохранить некоторые файлы данных, которые будут хранить защищенные данные, моя цель в том, что никто не сможет читать/редактировать файл, я закодировал простую манипуляцию байтом algorthim:Простой шифрование
private static final int KEY = 25156;
public static String encrypt(String s) {
byte[] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++)
bytes[i] = (byte) (bytes[i] + KEY);
return new String(bytes);
}
public static String decrypt(String s) {
byte[] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++)
bytes[i] = (byte) (bytes[i] - KEY);
return new String(bytes);
}
Строка не читаемый, но у меня есть несколько вопросов:
- Может ли это решить мою проблему?
- Если нет, что еще можно решить?
Обратите внимание, что значение «ключ» будет интерпретироваться по модулю 256, что означает это эквивалентно 68. И это невероятно простой, неискушенный код, который любой, у кого есть понимание, может «взломать». Это не позволит наивному пользователю прочитать файл, но это все. –
Если «никто не сможет читать/редактировать файл», вы имеете в виду «никто не может удобно читать/редактировать файл», да, это решит вашу проблему. Если вы имеете в виду «никто, в том числе правительственные агентства безопасности или другие криптографические специалисты, которые смогут читать/редактировать файл», вам понадобится гораздо более изощренность. Можете ли вы быть более конкретным в своем вопросе? – Simon
Реальность заключается в том, что определенный атакующий сможет расшифровать ваши файлы, если все ключи кода/шифрования являются локальными (что я предполагаю, что они будут). Если вы после достаточно приемлемого алгоритма, посмотрите на пакет javax.crypto, который позволит вам шифровать данные с помощью ключа, встроенного в ваш код, чтобы кто-то должен был декомпилировать ваш код, чтобы иметь возможность расшифровать. –