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

Поиск последовательности элементов в массиве - C++

Восстановить пароль Регистрация
 
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
11.06.2014, 02:08     Поиск последовательности элементов в массиве #1
В универе задали создать программу авторизации (иначе не знаю как объяснить). В начале на выбор предлагается два действия - добавить пользователя и авторизация. Все это нужно сделать с хешированием и считыванием/записью в файл. В итоге у меня получился вот такой вот код:
Кликните здесь для просмотра всего текста
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <ctime>
using namespace std;
const int n =1000;
int a, b, c, d;
const char glas[] = "AEIOUYaeiouy";
const char sogl[] = "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz";
void registraciya(char *log, char *pass)
{   
    char *z = {", "};
    cout << "Registraciya novogo pol'zovatelya"<< endl;
    cout << "Vvedite login maximum 16 symvolov" <<endl;
    cin >> log;
    cout << "Vvedite parol' maximum 16 symvolov" <<endl;
    cin >> pass;
    /*************Хеширование************/
     for (int i = 0; i < strlen(log); i++)
        {
    if (strchr(sogl, log[i]) == NULL)
     {
         a = int(log[i]);
         ofstream f("log.txt", ios::app);
        f << a;
    }
        }
     cout << endl;
      for (int i = 0; i < strlen(pass); i++)
        {
    if ( strchr(sogl, pass[i]) == NULL)
     {
         b = int(pass[i]);
         ofstream p("pass.txt", ios::app);
        p << b;
     }
        }
        ofstream f("log.txt", ios::app);
        f << z;
        ofstream p("pass.txt", ios::app);
        p << z;
}
void avtorizaciya(char *a_log, char *a_pass)
{
        char* f_log = new char[n];
        char* f_pass = new char[n];
        ifstream l("log.txt");
            //while(!f.eof())
        for(int i=0; i<1000; i++)
            {
                l >> f_log;
                cout << f_log;
            }
        cout << endl;
        ifstream g("pass.txt");
            //while(!f.eof())
        for(int i=0; i<1000; i++)
            {
                g >> f_pass;
                cout << f_pass;
            }
        cout << endl;
      cout << "Avtorizaciya" << endl;
      cout << "Vvedite login"<< endl;
      cin >> a_log;
      cout << "Vvedite parol'"<< endl;
      cin >> a_pass;
      /************Хеширование***********/
     for (int i = 0; i < strlen(a_log); i++)
        {
    if ( strchr(sogl, a_log[i]) == NULL)
     {
         c = int(a_log[i]);
         cout << c;
     }
        }
     cout << endl;
      for (int i = 0; i < strlen(a_pass); i++)
        {
    if ( strchr(sogl, a_pass[i]) == NULL)
     {
         d = int(a_pass[i]);
         cout << d;
    }
     }
      /****************************************/
      /************* Поиск ********************/
 
      }
int _tmain(int argc, _TCHAR* argv[])
{   
    char* log = new char[n];
    char* pass = new char[n];
    char* a_log = new char[n];
    char* a_pass = new char[n];
    char* f_log = new char[n];
    char* f_pass = new char[n];
    char sw;
    double ws;
    begin :
    cout <<"==========Menu==========" << endl;
    cout << " 1. Dobavlenie novogo pol'zovatelya" << endl;
    cout << " 2. Avtorizaciya" << endl;
    cout << " 3. Vichod" << endl;
    cout << "========================" << endl << "Vvedite cifru iz menu dlya deysviya" << endl;
        cin >> ws;
        sw = ws;
        if(ws>5 || ws<1 || (ws<='A' && sw>='Z')|| (ws<='a' && ws >='z'))
        {
            cout << "Oshibka" << endl;
            goto begin;
        }
        if(ws!= (int)ws)
        {
            cout << endl << "Oshibka" << endl;
            goto begin;
        }
        switch(sw)
        {
        case 1:
            registraciya(log, pass);
            goto begin;
        case 2:
            avtorizaciya(a_log, a_pass);
            goto begin;
        case 3:
            return 0;
        }
}

Вся проблема в авторизации. Как сделать поиск хешированных логина и пароля в массиве других хешированных лоигнов и паролей, введенный при регистрации?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
11.06.2014, 02:41     Поиск последовательности элементов в массиве #2
1) Логины не хешируются. Поиск происходит по логину в файле "auth.txt" в нём структура:
login%hash
login2%hash2
При вводе логина сравниваем введенный логин и текст в каждой строке до знака %. Если находим совпадение переходим к второму этапу.
2) Введенный пароль хешируем через onewayfunction (почитает в гугл, что это ) и сравниваем с хешем в файле. Получается не зная параметров и алгоритмов нашей onewayfunction узнать пароль имея файл или строку "petya%Mf3N5xifs50fmsq" очень сложно.

P.S. В onewayfunction можешь запихнуть типа сумма всех символом по int log 17 определит ключ хеширования и т.д. Вообщем там поизвращаешся )
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
11.06.2014, 03:03  [ТС]     Поиск последовательности элементов в массиве #3
rikimaru2013, у меня хеширование не в смысле шифрования. Задание для отработки темы "Поиск с хешированием". Нужно сделать поиск по хешам
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
11.06.2014, 03:20     Поиск последовательности элементов в массиве #4
Мне кажется, что если и обращаетесь за помощью, то лучше позабыть о вашем "правильном мнение" и прислушаться к людям, что хотят вам помочь )
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
11.06.2014, 03:24  [ТС]     Поиск последовательности элементов в массиве #5
rikimaru2013, просто я почти ничего не понял из того, что вы написали)
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
11.06.2014, 03:40     Поиск последовательности элементов в массиве #6
Yandex
Объявления
11.06.2014, 03:40     Поиск последовательности элементов в массиве
Ответ Создать тему
Опции темы

Текущее время: 21:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru