Схема генерации серийного номера бедного человека

Я хотел бы получить простую схему / алгоритм для генерации серийных номеров на основе уникального аппаратного идентификатора (идентификатор процессора, сетевой адрес Mac или серийный номер жесткого диска).

Я хотел бы, чтобы схема работала только в одном направлении - чтобы приложение на клиентской машине могло проверять серийный номер, но не генерировать его. (Так что было бы не просто взломать).

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

Но главная проблема с подписью RSA состоит в том, что она слишком велика - ее размер подписи составляет 128 или 256 байт в зависимости от размера ключа RSA (Размер подписи RSA?)

Я хочу, чтобы серийный номер был простым копированием и вставкой из почты в регистрационную форму - максимум 64 символа, в идеале 32 байта.

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

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

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

В качестве основы я бы предпочел использовать обычный C или C ++ (не C #), предпочтительно Windows / wincrypt.h или любой существующий простой исходный код на C (желательно не огромные сторонние библиотеки).

Можно ли создать пару открытых / закрытых ключей RSA, чтобы длина подписи составляла 32 символа?

Ответы на вопрос(3)

Ваш ответ на вопрос