Форум программистов, компьютерный форум CyberForum.ru

Генерация и проверка серийного номера, как реализовать? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ While в while http://www.cyberforum.ru/cpp-beginners/thread1498275.html
здравствуйте, я только начала изучать C++, с простыми циклами все понятно, а вот вложенные циклы туговато доходят. пожалуйста объясните данный код (желательно каждую строчку)) int i=0; int j=0; int num=0; while (i<10) { while (j<10) { num++; j++;
C++ Конструктор с параметром C++ Приветствую! Изучая одну литературу столкнулся с конструктором в котором мне не понятен синтаксис т.к. во время обучения самого С++ не сталкивался с ним. Объясните пожалуйста. struct func { int& i; func(int& i_) : i(i_) {}//собственно конструктор который не понятен, объясните как он работает, и если можно напишите аналог void operator() () { ... http://www.cyberforum.ru/cpp-beginners/thread1498274.html
Контейнер map с сохранением порядка вставки элементов C++
Можно ли в контейнере расположить ключи так, чтобы они не были отсортированы в порядке убывания или возрастания. Например я ложу в контейнер такие ключи: map<string,string> st; st.insert(make_pair("A","A1")); st.insert(make_pair("C","C1")); st.insert(make_pair("B","B1")); Но "map" располагает ключи в алфавитном порядке автоматически, то есть: A:A1 B:B1
Можно ли узнать, каким компилятором была собрана ты или иная DLL-ка ? C++
сабж..
C++ Поиск в тексте неодинаковых открытой и закрытой дужек или кавычек http://www.cyberforum.ru/cpp-beginners/thread1498264.html
разработать программу по поиску в тексте неодинаковых открытой и закрытой дужек или кавычек. Исправить ошибки и сохранить файл
C++ Ошибка в коде: "использована неиницилизирована локальная переменная" решал задачку где нужно создать функию котора выводит среднее значение введеных чисел масива. код написал но не компилируется, выдает ошибку "использована неиницилизирована локальная переменная". помогите исправить, вот код #include <iostream> using namespace std; int intmax(int); const int size = 5; int main() { подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1603 / 995 / 118
Регистрация: 27.09.2009
Сообщений: 1,918
Завершенные тесты: 1
13.07.2015, 18:14     Генерация и проверка серийного номера, как реализовать?
Надо сразу иметь в виду, что такая защита - штука ненадёжная. Если кому-то понадобится, её легко снимут. К тому же, цепь прочна настолько, насколько прочно её слабейшее звено. Попадалась мне одна программа ценой под тысячу долларов с лицензионной схемой, использующей мощную криптографию, но привязанной к Volume ID диска C. И когда мне надо было перенести эту лицензию на виртуальную машину, я попросту поменял там Volume ID на нужный при помощи маленькой программульки, скачанной с сайта microsoft.com. Вот вам и криптография.

После этих прелиминариев, перейдём всё же к теории.
Для простоты будем использовать в качестве идентификатора тот самый Volume ID, который я опустил ниже плинтуса в предыдущем абзаце. Получить его можно при помощи функции GetVolumeInformation.
От этого идентификатора (и/или других, более надёжных) берём хэш (не абы какой, криптографический - SHA3, например).
В поставке программы должен идти открытый ключ. Соответствующий ему закрытый ключ хранится у автора программы. Эта пара может быть одинаковой для всех экземпляров программы или индивидуальная для каждого клиента.
При регистрации автор получает идентификатор машины (тот самый хэш) и зашифровывает его своим закрытым ключом, результат - серийник, который отсылается пользователю.
Проверка серийника на стороне клиента: собирается идентификационная информация, от неё берётся хэш и сравнивается с результатом расшифровки серийника открытым ключом. Если совпало - серийник правильный. Естественно, атакующие первым делом нацелятся на эту часть алгоритма и попробуют сделать так, чтобы проверка считала правильным любой серийник.

Цитата Сообщение от young_snake Посмотреть сообщение
А если, скажем программа на виртуалке будет запущена, то id оборудования там будут одинаковые?
По обстоятельствам. В разных копиях одной и той же виртуальной машины (которые можно рассеять по любому количеству реальных машин) - да. В разных виртуальных машинах обычно идентификаторы разные (тот же Volume ID, к примеру, генерируется случайным образом во время форматирования диска).
 
Текущее время: 17:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru