Создание строки кода, трудной читать

Я пишу способ проверить, соответствует ли клиентский порядковый номер моему твердому кодированному числу. Существует ли способ сделать это максимально трудно для чтения в случае, если нежелательный достает код?

Я работаю в Java.

Например (псевдо код)

если (x! = y) выпрыгните из кода и ошибки возврата

С наилучшими пожеланиями, извинения, если это - что-то вроде нечетного

8
задан skaffman 4 August 2010 в 23:45
поделиться

7 ответов

Защита через неизвестность - всегда плохая идея. Избегать этого не нужно, но не стоит полагаться только на это.

Либо зашифруйте серийные номера с помощью ключа, который вы вводите при запуске службы, либо просто укажите серийные номера как шестнадцатеричные или base64, а не ASCII.

19
ответ дан 3 November 2019 в 13:08
поделиться

Обычный способ сделать это - использовать хэш.

  1. Создайте хэш своего серийного кода.
  2. Чтобы проверить серийный номер клиента, хешируйте его с помощью той же функции.
  3. Если хэши совпадают, серийный номер был правильным, даже если сам серийный номер не был в коде.

По определению, по хешу практически невозможно вывести исходный код.

7
ответ дан 3 November 2019 в 13:08
поделиться

Усложнение кода, чтобы избежать взлома, никогда не помогает!

6
ответ дан 3 November 2019 в 13:08
поделиться

Вы можете попробовать SHA1 или другое одностороннее шифрование (MD5 не так безопасен, но довольно хорош). Не делайте этого:

if (userPassword equals myHardCodedpassword)

Сделайте это:

if (ENCRYPTED(userPassword) equals myhardcodedEncryptedpassword)

Таким образом, программа чтения кода может видеть только зашифрованное (и очень, очень и очень трудно расшифровать) значение.

1
ответ дан 3 November 2019 в 13:08
поделиться

В Википедии есть статья об обфускации кода . Может там уловки вам помогут =)

0
ответ дан 3 November 2019 в 13:08
поделиться

Запутать управляющую структуру выпущенного кода?

например, вводить числа в случайном месте кода под другой переменной и в какой-то случайный момент сделать их равными x и y?

http://en.wikipedia.org/wiki/Spaghetti_code

0
ответ дан 3 November 2019 в 13:08
поделиться

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

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

0
ответ дан 3 November 2019 в 13:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: