Затрудняет чтение строки кода - PullRequest
8 голосов
/ 05 августа 2010

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

Я работаю в Java.

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

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

Приветствия, извинения, если это немного странно

Ответы [ 7 ]

19 голосов
/ 05 августа 2010

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

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

7 голосов
/ 05 августа 2010

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

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

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

6 голосов
/ 05 августа 2010

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

1 голос
/ 05 августа 2010

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

if (userPassword equals myHardCodedpassword)

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

if (ENCRYPTED(userPassword) equals myhardcodedEncryptedpassword)

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

0 голосов
/ 05 августа 2010

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

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

0 голосов
/ 05 августа 2010

Есть статья в Википедии об обфускации кода . Может быть, хитрости могут вам помочь =)

0 голосов
/ 05 августа 2010

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

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

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

...