2015-07-08 4 views
1

Итак, я занимаюсь разработкой игр в java. Теперь я пытаюсь сохранить прогресс пользователя, помещая данные в файл. Но если я помещу его только в текстовый файл, очевидно, что он будет легко доступен. Каким будет лучший способ хранения/хэш-данных, например, «текущий уровень, мощность атаки и т. Д.».Лучший способ предотвратить использование пользователем данных

Спасибо.

+0

Возможно, лучше спросить [Разработка игр] (http://gamedev.stackexchange.com/) –

ответ

2

Это будет смутный ответ.

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

В качестве второго шага вы можете зашифровать свои файлы.

Но независимо от того, что вы делаете или как сильно вы пытаетесь, пока все данные хранятся на клиенте, ваши пользователи все равно смогут их изменить.

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

+0

Спасибо, было бы хорошо, если бы я использовал как случайный хэш + целочисленные данные в хеше MD5, что-то вроде хранилища паролей. –

+0

Да, вы можете добавить соль, если хотите, но я бы предположил, что существует очень ограниченное количество таблиц поиска для чего-то сложного, как ваш весь файл сохранения :) (другими словами, случайная часть может быть ненужной). Помните, что шифрование означает, что вам нужно будет хранить ваш ключ где-нибудь, возможно, на стороне сервера. –

+0

Хорошо, большое спасибо. –

0

Вы можете зашифровать и сохранить дату в текстовом файле. Экранирование не позволит пользователю изменять его.

+1

Но тогда вам нужно найти способ скрыть ключ шифрования. – dotvav

+0

Yup вы можете хранить пароль в коде или использовать некоторую логику в коде для его генерации. Я знаю, что это небезопасно, и любой хакер может его взломать. Но я думаю, что если данные - это только уровни/оценки, которые вы можете сохранить. .. –

0

Вы можете использовать sqlite, который является файловым DB. Он поддерживает encryption, а также множество операционных систем, прост в установке и использовании!

Подробнее об этом here.

0

Очень простой способ достижения этой цели - использовать сериализацию. Это позволяет вам напрямую принимать ваш Java-объект и сохранять его в текущем состоянии. Хорошее руководство по этому вопросу находится в http://www.mkyong.com/java/how-to-write-an-object-to-file-in-java/

Единственный способ легко прочитать и изменить эти данные, если у вас есть доступ к классу java, который его создал.