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

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

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

Здравствуйте. Меня интересует вопрос о том, как внутри своей программы создать генератор ключей, который сможет создать много ключей, в последствии используемые в программе для авторизации пользователя. А также хорошо бы создать аналогичный внешний генератор, который, в свою очередь, позволяет мне получать ключи для программы, подходящие к ней.
В интернете ничего не накопал, пожалуйста натолкните на мысль что почитать и какие способы лучше выбирать для работы.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2012, 21:35
Ответы с готовыми решениями:

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

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

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

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

14
Avazart
Эксперт С++
8121 / 5895 / 583
Регистрация: 10.12.2010
Сообщений: 27,274
Записей в блоге: 21
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
Avazart
Эксперт С++
8121 / 5895 / 583
Регистрация: 10.12.2010
Сообщений: 27,274
Записей в блоге: 21
05.03.2012, 22:13 4
серийный номер, код продукта неважно..

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

Программа подставляет серийный номер в ф-цию и сравнивает результат выполнения ф-ции с ключем
если они равны то регистрация проходит успешно, если нет значит прорамма говорит что невернный ключ
0
Клод
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
05.03.2012, 22:17  [ТС] 5
Но мне нужно получить кучу ключей, теперь ещё морока с генерацией серийных номеров.
Или я опять неправильно понял?
0
Avazart
Эксперт С++
8121 / 5895 / 583
Регистрация: 10.12.2010
Сообщений: 27,274
Записей в блоге: 21
05.03.2012, 22:39 6
Каждый серийный номер порождает ключ
0
Клод
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
06.03.2012, 08:26  [ТС] 7
А как тогда породить кучу ключей и серийников?
чтобы не самому писать, а создать вычислительную систему, которая будет создавать очень много таких ключей.
0
Avazart
Эксперт С++
8121 / 5895 / 583
Регистрация: 10.12.2010
Сообщений: 27,274
Записей в блоге: 21
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
Pirat-SR
66 / 66 / 10
Регистрация: 20.02.2012
Сообщений: 234
06.03.2012, 23:15 10
Всем привет. У меня тут появилась идея на счёт вашей темы. Можно ведь делать программу ограниченную без активации серийных номеров чтобы она стала полной, просто создаём программу которую будем продавать и делаем блокировку на часть исходного кода (любое количесто) и к ней делаем программу которая будет активировать заблокированый исходный код, и удалять свой исходный код, что бы второй раз нельзя было активировать с помощью этого дополнения.
0
Avazart
Эксперт С++
8121 / 5895 / 583
Регистрация: 10.12.2010
Сообщений: 27,274
Записей в блоге: 21
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
Avazart
Эксперт С++
8121 / 5895 / 583
Регистрация: 10.12.2010
Сообщений: 27,274
Записей в блоге: 21
07.03.2012, 00:16 12
Картинка
0
Миниатюры
С++ Builder 6. Генератор ключей для программы.  
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
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
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2012, 08:46

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.