Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/124: Рейтинг темы: голосов - 124, средняя оценка - 4.59
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
1

С++ Builder 6. Генератор ключей для программы.

05.03.2012, 21:35. Показов 25013. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Меня интересует вопрос о том, как внутри своей программы создать генератор ключей, который сможет создать много ключей, в последствии используемые в программе для авторизации пользователя. А также хорошо бы создать аналогичный внешний генератор, который, в свою очередь, позволяет мне получать ключи для программы, подходящие к ней.
В интернете ничего не накопал, пожалуйста натолкните на мысль что почитать и какие способы лучше выбирать для работы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2012, 21:35
Ответы с готовыми решениями:

Простые программы (генератор ключей)
Подскажите, пожалуйста, как в в программке сделать так, чтобы в ней под каждым новым вызовом...

генератор ключей для anylogic 6
Уважаемые форумчане, нужен генератор ключей для anylogic 6

Генератор ключей
Я хочу создать программу которая будет генерировать ключи для NOD32.Ключи у меня есть, а как...

Генератор ключей!
Прошу отпишитесь кто может ! Значит такая вот ситуация, есть программа и есть генератор ключей ....

14
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 21:46 2
Да обычная фукция y=f(x);
где y - ключ, x- серийный номер;
Естественно саму функцию будут знать только обе программы
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
05.03.2012, 21:49  [ТС] 3
Извините за тупой вопрос, я просто новичок в этом деле.
Просветите меня пожалуйста:
y - ключ
x - серийный номер (что значит серийный номер?)
и какую роль в этом коде играет f
Ещё раз простите за моё шалопайство)
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 22:13 4
серийный номер, код продукта неважно..

Пользователь вводит в программу серийный номер и ключ.

Программа подставляет серийный номер в ф-цию и сравнивает результат выполнения ф-ции с ключем
если они равны то регистрация проходит успешно, если нет значит прорамма говорит что невернный ключ
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
05.03.2012, 22:17  [ТС] 5
Но мне нужно получить кучу ключей, теперь ещё морока с генерацией серийных номеров.
Или я опять неправильно понял?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 22:39 6
Каждый серийный номер порождает ключ
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
06.03.2012, 08:26  [ТС] 7
А как тогда породить кучу ключей и серийников?
чтобы не самому писать, а создать вычислительную систему, которая будет создавать очень много таких ключей.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.03.2012, 10:24 8
Вводи случайные числа в серийник получишь соответствующие им ключи
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
06.03.2012, 14:15  [ТС] 9
y = f(x);
y - ключ,
x - серийный номер.
а можно код в пример.
как записать допустим чтобы ключ = A2RD4TA3R;
а серийник = FFLT-124.
0
67 / 67 / 10
Регистрация: 20.02.2012
Сообщений: 234
06.03.2012, 23:15 10
Всем привет. У меня тут появилась идея на счёт вашей темы. Можно ведь делать программу ограниченную без активации серийных номеров чтобы она стала полной, просто создаём программу которую будем продавать и делаем блокировку на часть исходного кода (любое количесто) и к ней делаем программу которая будет активировать заблокированый исходный код, и удалять свой исходный код, что бы второй раз нельзя было активировать с помощью этого дополнения.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.03.2012, 00:12 11
Как то так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
//----------------------------------------------------------------------------------------------------
std::string func(std::string serial)
 {
 serial+=serial[0];
 for(unsigned i=0;i<serial.size()-1;i++)
    {
     if(isalpha(serial[i]+i)||isdigit(serial[i]+i)) serial[i]+=i;
     else  if(isalpha(serial[i]-1)||isdigit(serial[i]-1)) serial[i]--;
    }
 return serial;
 }
//---------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
std::string s;
for(;;)
 {
 std::cout<<"Serial= ";
 std::cin>>s;
 std::cout<<"Key=  "<<func(s)<<std::endl;
 if(s=="quit" || s=="exit") break;
 system("pause");
 }
return 0;
}
//---------------------------------------------------------------------------
2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.03.2012, 00:16 12
Картинка
Миниатюры
С++ Builder 6. Генератор ключей для программы.  
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
07.03.2012, 00:21 13
один из вариантов:
- при запуске пользователю предлагается активировать программу - в качестве кода запроса используется текущая дата в которой к каждому символу прибавлено некоторое случайное число полученное после запуска генератора случайных чисел с неким постоянным начальным значением X1 (символы складываются со случайными числами таким образом что бы результирующие символы оставались цифрами - то есть складываются "по модулю" 10)
- генератор серийных номеров получив код запроса расшифровывает переданную ему текущую дату отнимая от кода запроса случайные числа полученные от генератора с таким же как и у программы начальным значением X1. после этого добавляет к символам результата другие случайные числа полученные после запуска генератора случайных чисел с неким постоянным начальным значением X2 и использует полученную стоку как код ответа
- программа получив код ответа и зная X2 расшифровывает переданную дату и если она совпадает с посланной активируется
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
07.03.2012, 08:14  [ТС] 14
Идея хорошая.
но как осуществить?

Добавлено через 21 минуту
А как записать
x и y?
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
07.03.2012, 08:46 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdlib.h>
 
AnsiString create_uid(void)
{
    TDateTime t = Now();
    unsigned short y, month, d, h, m, s, ms;
    t.DecodeDate(&y, &month, &d);
    t.DecodeTime(&h, &m, &s, &ms);
    return
    IntToStr(y) +
    IntToStr(month) +
    IntToStr(d) +
    IntToStr(h) +
    IntToStr(m) +
    IntToStr(s) +
    IntToStr(ms);
}
 
AnsiString encode(const unsigned seed, const AnsiString &s)
{
    AnsiString res = s;
    srand(seed);
    for (int i = 1; i <= s.Length(); i++)
    {
        int c = res[i];
        c -= '0';
        c += rand() * 10 / RAND_MAX;
        if (c >= 10) c -= 10;
        c += '0';
        res[i] = c;
    }
    return res;
}
 
AnsiString decode(const unsigned seed, const AnsiString &s)
{
    AnsiString res = s;
    srand(seed);
    for (int i = 1; i <= s.Length(); i++)
    {
        int c = res[i];
        c -= '0';
        c -= rand() * 10 / RAND_MAX;
        if (c < 0) c += 10;
        c += '0';
        res[i] = c;
    }
    return res;
}
 
AnsiString uid = create_uid(); //в программе генерируем уникальную строку
unsigned seed_1 = 123; //тут желательно поставить какое нибудь действительно уникальное значение
unsigned seed_2 = 456; //тут тоже желательно поставить какое нибудь действительно уникальное значение
AnsiString s_1 = encode(seed_1, uid); //кодируем нашу уникальную строку и посылаем разработчику
AnsiString s_2 = decode(seed_1, s_1); //в генераторе декодируем
AnsiString s_3 = encode(seed_2, s_2); //кодируем другим ключем и посылаем пользователю
AnsiString s_4 = decode(seed_2, s_3); //в программе декодируем и сравниваем с тем что посылали
if (uid != s_4)
{
    Application->MessageBox("Вы меня обманываете!!!", "Сообщение", MB_OK);
}
0
07.03.2012, 08:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2012, 08:46
Помогаю со студенческими работами здесь

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

Генератор ключей
Здраствуйте! помогите пожалуйста создать генератор ключей,сколько это будет стоить?позже могу...

Генератор ключей
Нужно сделать программу которая генерирует случайные ключи (Например как этот...

генератор ключей
как сделать код чтобы он генерировал рандомные ключи , чтобы получалось чтото вроде этого -&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru