Должен ли я изменить выход лицензионного ключа с чистого вывода MD5 на общий код типа «XXXX-YYYY-RUSZZ»?

StackOverflow https://stackoverflow.com/questions/4666262

Вопрос

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

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

Я держу все очень просто, так что:

license_key = md5(email + "Salt_String");

У меня есть функции PHP и C#, выполняющие тот же алгоритм и получаю тот же ключ.

Проблема заключается в том, что вывод этих функций представляет собой 32-символьную строку, подобную:

A69761CF99316358D04771C5ECFCCDC5

Что потенциально трудно помнить/тип. Да, я знаю о копировании/вставке, но я хочу, чтобы всем платящим клиентам было легко разблокировать программное обеспечение.

Стоит ли каким -то образом преобразовать эту длинную строку в нечто более короткое?

Допустим, я использую только первые 6 цифр, так что: A69761

Очевидно, что в этом есть гораздо больше криптографических столкновений, но будет ли это иметь значение вообще в практическом использовании?

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

Это было полезно?

Решение

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

Другие советы

По моему опыту, просьба пользователя печатать или скопировать/вставить код с 30-м символом, действительно приводит к разочарованным клиентам. Дело не в том, что это так сложно. Это просто препятствие, о котором люди не заботятся.

Решение, для которого я использовал мой бизнес это отдельная пробная версия и приобретенные загрузки. Чтобы получить их лицензированную копию, типы клиентов в своем адресе электронной почты и короткий идентификатор пользователя в форме загрузки. Ввод только в электронную почту автоматически отправляет идентификатор пользователя. Вы не спрашивали об этом, но система для автоматического поиска любого кода, который нуждается в клиенте, даже важнее, чем простая система. Система загрузки просматривает данные пользователя в базе данных и обслуживает SetupSomeProductCustomerName.exe, в которой вкладывают лицензию пользователя. Эта настройка устанавливает лицензированную копию клиента, не требуя дальнейшей идентификации или серверных подключений.

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

Тем не менее, если вы предпочитаете использовать систему с использованием одностороннего хэша, просто используйте алгоритм, который генерирует меньший хэш. Например, CRC-32 приводит к 8 шестнадцатеричных цифр.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top