Найкращий механізм для створення ліцензійних ключів [закрито]


35

Які методи / бібліотеки / інструменти пропонують людині для створення ліцензійних ключів (ті прекрасні речі AAAAA-AAAAA-AAAAA-AAAAA-AAAAA, які ви вводите під час реєстрації програмного забезпечення)?

Будь-які проблеми, на які слід звертати увагу при їх реалізації?

(На даний момент мене це цікавить як загальна річ, а не конкретна мова, тому просто вкажіть, якою мовою ви користуєтесь, якщо ваше рішення є мовою).

Відповіді:


23

Це приблизно те саме, що і при зберіганні паролів. У вас повинен бути унікальний секретний ключ, відомий лише генератору та вашій програмі. За допомогою цієї клавіші маніпулюйте деталями (ім'я користувача, пароль, організація тощо), а потім вкажіть їх. Потім ви можете зробити щось тривіальне кодування передачі в Base32 на хеші або просто перемістити його в шістнадцяткову рядок, якщо вам не важливий формат.

Будь-які проблеми, на які слід звертати увагу при їх реалізації?

Тримайте секрети в таємниці та роздільно. Зробіть свою реалізацію неправдоподібною. Якщо хтось це порушить, можете легко змінити реалізацію? Однією поширеною реалізацією настільних додатків є використання віддаленого сервера для перевірки ліцензії. Це виключає можливість того, що хтось може повернути інженеру хеш або алгоритм, перевіривши саму програму.


11
BASE32 для кодування - це стандарт. Це дозволяє легко вводити користувальницький людина;) (base32: вибір з букв і цифр, які сильно відрізняються , наприклад, 0 і О не в послідовності).

1
@Pierre: Я цього не знав, хороша інформація!
Джош К

10

Це ж запитання було задано на SO, і прийнята відповідь є досить хорошою. Загальна суть:

  • Візьміть ім’я користувача
  • Скоротіть ім'я користувачів та секретний ключ та хеш із (наприклад) SHA1
  • Розпакуйте хеш SHA1 як буквено-цифровий рядок. Це "Ключ продукту" індивідуального користувача
  • У межах програми зробіть той же хеш і порівняйте його з ключем продукту. Якщо дорівнює, добре.

1

Мій кращий метод - це генерувати 10 000 випадкових ліцензійних рядків, SHA1 (або MD5) хеш-них або HMAC їх, і включати весь або частину хеша SHA1 / MD5 в сам виконуваний файл. Коли вводиться рядок ліцензії, ви просто використовуєте прихований код, щоб генерувати хеш рядка та порівнювати його з тими у списку. Якщо вона відповідає, це дійсна ліцензія. Якщо у вас мало ліцензій, випустіть нову версію з більшою кількістю рядків.

Використання лише перших 96 біт хеша SHA1 є адекватним. Таким чином, 10 000 ліцензій займе менше 120 КБ. Алгоритмічна генерація ключів або створення генератора ключів було б неможливим. Єдина вразливість, про яку вам доведеться турбуватися, - це зворотна інженерія або обхід. (Або хтось поширює свій дійсний ключ.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.