Ранее я работал в игровой индустрии и что-то делал в этом направлении. Насколько мне известно, никто не удосужился взломать партитуру для сдачи партитуры.
То, как это было сделано, было:
- Генерация случайного числа в виде соли (из вспышки)
- Кодирование партитуры с использованием математических операций на основе соли (из флэш-памяти)
- Добавьте контрольную сумму, чтобы убедиться, что на счете не было закалки (из вспышки)
- Отправьте счет и все необходимые данные на страницу отправки счета
- На сервере подтвердите, что счет не был изменен, используя контрольную сумму
- Если оценка действительна, вставьте ее в базу данных, в противном случае отклоните ее
- Если хотите, вы можете зарегистрировать IP-адреса отправителей результатов, нарушающих контрольные суммы (может быть, у вас нет трех контрольных сумм) и добавить сценарий, чтобы запретить им доступ к серверу на 1 час, но это вероятно, не потребуется, если кто-то не захочет так плохо взломать ваш код.
Примечание:
Хеширование / проверка контрольных сумм производились с использованием пользовательской функции. Не нужно что-то очень безопасное. Это было сделано с использованием вычислений на соль и счет. Некоторые простые математические операции, такие как суммы, умножения и вычитания.
Редактировать : простой алгоритм / математика для контрольной суммы
Допустим, ваш пользователь набрал 5885 .
Вы генерируете случайное число в виде соли 134789 (постоянная длина, отступ с 0)
cryptedScore = Оценка * Соль (здесь следует использовать что-то более сложное, но это только пример)
В нашем примере зашифрованная оценка будет: 793233265
Теперь для контрольной суммы, допустим, вы хотите, чтобы в качестве контрольной суммы было значение 253 .
Вы добавляете все номера вашего зашифрованного счета 7 + 9 + 3 + 2 + 3 + 3 + 2 + 6 + 5 = 40
Теперь вы вычисляете значение своей контрольной суммы для этой оценки
253 - (сумма зашифрованных баллов% 253 )
Теперь у нас есть следующие числа:
соль = 134789
зашифрованный счет = 793233265
контрольная сумма = 40
Вы делаете запрос на сервер, отправляя 134789793233265040 в виде оценки.
На сервере результатов вы можете разделить 793233265 на 134789 , давая 5885 , и проверить контрольную сумму, используя ту же функцию, что и раньше.
Если контрольная сумма не пройдена, цифры были подделаны.
Вы могли бы, вероятно, получить что-то гораздо более безопасное, но это должно сработать.