Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 80, средняя оценка - 4.78
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
#1

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

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

Здравствуйте. Меня интересует вопрос о том, как внутри своей программы создать генератор ключей, который сможет создать много ключей, в последствии используемые в программе для авторизации пользователя. А также хорошо бы создать аналогичный внешний генератор, который, в свою очередь, позволяет мне получать ключи для программы, подходящие к ней.
В интернете ничего не накопал, пожалуйста натолкните на мысль что почитать и какие способы лучше выбирать для работы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2012, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ Builder 6. Генератор ключей для программы. (C++ Builder):

Генератор паролей C++ Builder - C++ Builder
Здравствуйте. Очень удивился, когда не нашел ни одного исходника генератора паролей на C++ Builder. Наверняка же многие делали хорошие...

Создать генератор слов в C++ Builder 5 - C++ Builder
Всем привет!Я хочу создать генератор слов в C++ Builder 5 киньте исходник.Заранее спасибо.

можно ли в С++ Builder 2006 писать программы на С++ Builder 6? - C++ Builder
подскажите, пожалуйста... если программка написана на С++ Builder 2006, могу ли я перевести проект под С++ Builder 6? если да, то как? ...

Как использовать компоненты скомпилированные для C++ Builder 2007 в C++ Builder 2010? - C++ Builder
Народ! Такая проблема... Есть набор компонентов т.н. Dicom VCL. Сайт производителя - http://www.medicalconnections.co.uk/. У них на...

Какие компоненты использовать для поиска по одному из N ключей - C++ Builder
Всем привет! У меня такой вопрос, какие лучше компоненты использовать, для работы с поиском по одному из N-кол-во ключей. Вот не...

Компиляция программы в С++ Builder 5 - C++ Builder
Здравствуйте. Возник такой вопрос: Как скомпилировать программу (создать еxe-шник) , чтобы туда включились все библиотеки и классы, которые...

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

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

Программа подставляет серийный номер в ф-цию и сравнивает результат выполнения ф-ции с ключем
если они равны то регистрация проходит успешно, если нет значит прорамма говорит что невернный ключ
0
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
05.03.2012, 22:17  [ТС] #5
Но мне нужно получить кучу ключей, теперь ещё морока с генерацией серийных номеров.
Или я опять неправильно понял?
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,055
Записей в блоге: 17
05.03.2012, 22:39 #6
Каждый серийный номер порождает ключ
0
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
06.03.2012, 08:26  [ТС] #7
А как тогда породить кучу ключей и серийников?
чтобы не самому писать, а создать вычислительную систему, которая будет создавать очень много таких ключей.
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,055
Записей в блоге: 17
06.03.2012, 10:24 #8
Вводи случайные числа в серийник получишь соответствующие им ключи
0
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
06.03.2012, 14:15  [ТС] #9
y = f(x);
y - ключ,
x - серийный номер.
а можно код в пример.
как записать допустим чтобы ключ = A2RD4TA3R;
а серийник = FFLT-124.
0
Pirat-SR
64 / 64 / 4
Регистрация: 20.02.2012
Сообщений: 234
06.03.2012, 23:15 #10
Всем привет. У меня тут появилась идея на счёт вашей темы. Можно ведь делать программу ограниченную без активации серийных номеров чтобы она стала полной, просто создаём программу которую будем продавать и делаем блокировку на часть исходного кода (любое количесто) и к ней делаем программу которая будет активировать заблокированый исходный код, и удалять свой исходный код, что бы второй раз нельзя было активировать с помощью этого дополнения.
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,055
Записей в блоге: 17
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;
}
//---------------------------------------------------------------------------
1
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,055
Записей в блоге: 17
07.03.2012, 00:16 #12
Картинка
0
Миниатюры
С++ Builder 6. Генератор ключей для программы.  
vxg
Модератор
3184 / 1987 / 227
Регистрация: 13.01.2012
Сообщений: 7,684
07.03.2012, 00:21 #13
один из вариантов:
- при запуске пользователю предлагается активировать программу - в качестве кода запроса используется текущая дата в которой к каждому символу прибавлено некоторое случайное число полученное после запуска генератора случайных чисел с неким постоянным начальным значением X1 (символы складываются со случайными числами таким образом что бы результирующие символы оставались цифрами - то есть складываются "по модулю" 10)
- генератор серийных номеров получив код запроса расшифровывает переданную ему текущую дату отнимая от кода запроса случайные числа полученные от генератора с таким же как и у программы начальным значением X1. после этого добавляет к символам результата другие случайные числа полученные после запуска генератора случайных чисел с неким постоянным начальным значением X2 и использует полученную стоку как код ответа
- программа получив код ответа и зная X2 расшифровывает переданную дату и если она совпадает с посланной активируется
0
Клод
3 / 3 / 0
Регистрация: 13.02.2012
Сообщений: 161
07.03.2012, 08:14  [ТС] #14
Идея хорошая.
но как осуществить?

Добавлено через 21 минуту
А как записать
x и y?
0
vxg
Модератор
3184 / 1987 / 227
Регистрация: 13.01.2012
Сообщений: 7,684
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2012, 08:46
Привет! Вот еще темы с ответами:

C++ Builder Показ программы - C++ Builder
Люди помогите. Такая ситуация, сегодня программировали на C++ Builder, написал элементарную программку, просто установил кнопку Close...

Спрос на программы C++ Builder - C++ Builder
Здравствуйте. Часто программисты не пишут ИСР, движки, программы с помощью которых они сделали свой продукт. Господствует мнение что в C++...

Перенос программы из VC в Builder C++ - C++ Builder
Всем добрый день. Есть сканер отпечаток пальцев. К нему есть дрова, демо + исходники на VC. Прошу помощи по переводу. Сам потихоньку...

Запуск программы C++ Builder - C++ Builder
У меня Avast Free. не запускается программа, т.е. запускается, но через 5 секунд отключает. Приходится отключать антивирусник, тогда могу...


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

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

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