Как я могу сгенерировать уникальные непоследовательные серийные ключи без стороннего программного обеспечения?

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

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

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

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

ОБНОВЛЕНИЕ

SHA-1 кажется лучшим вариантом. Однако из примера вывода ключей SHA-1 я вижу, что они довольно длинные (40 символов). Получу ли я достаточные результаты, если возьму ключ из 40 символов и, скажем, усечу все, кроме последних 16 символов?

15
задан RLH 18 March 2013 в 20:24
поделиться