Обновить
34
0

Пользователь

Отправить сообщение
RSA — старый и надежный. И хотя современная криптография активно пропагандирует алгоритмы на эллиптических кривых — RSA позиции не охотно уступает.

Единственная проблема в отношении генерации серийных номеров с RSA — попись (и серийный номер) получается длинной.

Предложенный мной алгоритм — абсолютно не претендует на роль аналога RSA. А вот для генерации серийников для простых программ (с десятками тысяч пользователей) — вполне подойдет.
Так можно, об этом я упомянул в начале стетьи. Но для этого нужно изменить исходный файл.
Имхо, у этих гигантов свой подход к бизнесу: сначала их пользователи юзают версию незаконно, привыкают к ней, потом этих пользователей подталкивают (всяческими методами) использовать продукт легально.
Работает все просто.

Закрытый ключ в этом алгоритме — это массив случайно сгенерированных чисел. Этот массив условно разбивается на группы по 5 байт. Находится хеш каждой группы (для усложнения находится и хеш от хеша несколько сотен тысяч раз). Эти хеши образуют открытый ключ (их можно укоротить для экономии места на диске).

Подпись закрытым ключем делается так:

Находится хеш исходного сообщения. Берем 3 первых байта этого хеша, и находим в ЗАКРЫТОМ ключе элемент (из 5-ти байт) с таким порядковым номером. Если получилось число большее, чем всего есть элементов — используем остаток от деления.

Проверка подписи открытым ключем так:

Находится хеш исходного сообщения. Берем 3 первых байта этого хеша, и находим в ОТКРЫТОМ ключе элемент с таким порядковым номером. Если хеш подписи равен этому элементу открытого ключа — значит подпись верна. Иначе — подпись не верна.

Надеюсь не слишком запутано. Для большей ясности можно посмотреть пример (есть только на C#).
12 ...
235

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность