Из любопытства: Как порядковые номера сгенерированы? Подсказки, Алгоритмы? [закрытый]

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

Вот простой пример:

class Thing {
   String name
   boolean flag
   boolean anotherFlag
   static transients = ['flag', 'anotherFlag']
}

42
задан dsolimano 5 October 2013 в 22:23
поделиться

7 ответов

Brandon Staggs написал хорошую статью о Реализации Частичной Системы Проверки Порядкового номера. Примеры записаны в Delphi, но могли быть преобразованы в другие языки.

25
ответ дан stukelly 26 November 2019 в 23:51
поделиться

Вовлеките себя пара "открытый/закрытый ключ". Генерируйте порядковые номера (10000, 20000, 30000, 40000....), которые имеют некоторую характеристику идентификации (например, делимый 10 000). Зашифруйте то число с помощью закрытого ключа. Закодируйте то значение с помощью некоторой человекочитаемой системы (базируйтесь 32 или 64), и разделите значения на группы, чтобы помочь людям проанализировать. Распределите закодированный порядковый номер с каждой продажей Вас приложение.

Где-нибудь в приложении, Вам скрыли открытый ключ. Когда пользователь введет закодированный серийный номер, сначала декодируйте его назад к двоичному файлу. Используйте открытый ключ для дешифрования его. Проверьте, что это является делимым 10 000.

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

16
ответ дан Eclipse 26 November 2019 в 23:51
поделиться

Ну, традиционно порядковые номера последовательны... числа. Таким образом, первый пример от производственной линии имеет sn 0001 затем, следующий равняется 0002, и следующий равняется 0003. Я думаю, что большинство людей может разработать тот алгоритм.

Я думаю, что Вы на самом деле спрашиваете о ключах продуктов, которые используют подобный механизм для подписания сообщения с открытым ключом - ключ продукта является зашифрованным значением, программа имеет открытый ключ, который позволяет этому проверять, что ключ допустим, но только у поставщика программного обеспечения есть секретный ключ для 'подписывания' ключа продукта. Статья Википедии о цифровых подписях имеет общий механизм; единственное условие состоит в том, что для ключа, который будет вводиться пользователем, это должно быть вполне немного короче, чем PGP один.

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

Если у Вас есть 5 блоков 5 символов, Вы имеете 36^25 комбинации, который больше, чем 2^128, так мог использовать один из стандартных алгоритмов цифровой подписи, который генерирует 128 битов, то преобразуйте то значение для базирования 36.

16
ответ дан Pete Kirkham 26 November 2019 в 23:51
поделиться

GUID ("Глобально уникальный идентификатор") мог быть простым способом решить это:

http://en.wikipedia.org/wiki/Globally_Unique_Identifier

Гуиды содержат 16 байтов и обычно записаны в тексте как последовательность шестнадцатеричных цифр, таких как:

3F2504E0-4F89-11D3-9A0C-0305E82C3301

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

4
ответ дан mjn 26 November 2019 в 23:51
поделиться

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

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

Более позднее редактирование: также необходимо использовать для интернет-проверки зашифрованное и аутентифицируемое соединение, как HTTPS один.

3
ответ дан adrians 26 November 2019 в 23:51
поделиться

Используя мое Нечто Google, я придумал эту статью:

http://www.mactech.com/articles/mactech/Vol.13/13.02/SerialNumberGenerator/index.html

1
ответ дан Gavin Miller 26 November 2019 в 23:51
поделиться
0
ответ дан ʞɔıu 26 November 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: