Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 3
Регистрация: 02.05.2018
Сообщений: 33

Передача параметров в функцию

27.05.2018, 01:20. Показов 737. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить ещё одну проблему) Пароль в хэшированном виде хранится в HashData. И пока выводится на экран после хэширования. Как мне его определить в функцию которая записывает его в реестр? я запутался что-то
Код всей программы прилагаю.

module.cpp
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
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#define HASH_SIZE 16
#include "Header.h"
 
using namespace std;
 
int md5(/*int argc, char ** argv,*/ string password);
 
 int md5(/*int argc, char ** argv*/ string password)
{
    //cout << argv[0] << endl;
    unsigned int rc;
    BCRYPT_ALG_HANDLE hHashAlg;
    BCRYPT_HASH_HANDLE hHash;
    UCHAR HashData[HASH_SIZE];
    string s;
/*  if (argc>1)
        s = argv[1];
    else*/
        s = password;
    try {
        rc = BCryptOpenAlgorithmProvider(&hHashAlg, BCRYPT_MD5_ALGORITHM, NULL, 0);
        /*if (rc != 0)
            throw (BCryptErr(rc, 1u));*/
 
        rc = BCryptHash(hHashAlg, NULL, 0, (PUCHAR)s.data(), s.size(), HashData, 16);
 
        rc = BCryptCloseAlgorithmProvider(hHashAlg, 0);
        /*if (rc != 0)
            throw (BCryptErr(rc, 2u));*/
    }
    catch (BCryptErr &e)
    {
        e.print();
        return e.step;
    }
    cout << hex;
    for (int i = 0; i < HASH_SIZE; i++)
        cout << setw(2) << setfill('0') << (unsigned int)HashData[i];
    cout << endl;
    return 0;
}
 
 int Adder::RegKey(unsigned int HashData)
{
 
     unsigned int r;
     LPCTSTR Kursah;
    
     HKEY hregkey;
     Kursah = ".DEFAULT\\Software";
 
     r = RegCreateKey(HKEY_USERS, Kursah, &hregkey);
     if (r != ERROR_SUCCESS)
         cout << "error\n";
     else
         cout << "good\n";
     r = RegSetValue(HKEY_USERS, Kursah, REG_SZ,  , 0);
     if (r != ERROR_SUCCESS)
         cout << "error\n";
     else
         cout << "good\n";
    return 0;
}

main.cpp


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
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#include "Header.h"
 
using namespace std;
 
int md5(/*int argc, char ** argv*/string password);
 
 
int main()
{
    int enter = 13;
    int mode = 0;
    string login;
    string password;
    unsigned char p;
    setlocale(LC_CTYPE, "Russian");
    cout << "Выберете режим работы программы:\n1.Добавить пользователя\n2.Сменить пароль\n3.Удалить пользователя\n";
    cin >> mode;
    if (mode == 1)
    {
        cout << "Введите Логин\n";
        cin >> login;
        cout << "Введите пароль\n";
        do
        {
            p = _getch();
 
            if (p == enter) break;
            if (p == '\b' && !password.empty())
            {
                cout << '\b';
                cout << ' ';
                cout << '\b';
 
                password.pop_back();
                continue;
            }
            if (isalnum((unsigned char)p))
            {
                cout << '*';
                password.push_back(p);
            }
 
        } while (true);
        cout << login << endl << password << endl;
        md5(password);
        Adder add;
        add.RegKey();
    }
    else
        cout << "errer\n";
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2018, 01:20
Ответы с готовыми решениями:

Передача параметров в функцию
Люди помогите, пожалуйста. Есть такая простая задачка: В одномерном массиве, состоящем из n элементов вычислить произведение...

Передача параметров в функцию
void f(int a) ; // передача по значению void f(int *a);//передача по ссылке void f(int &amp;a) ; // а если так написано - что это...

Передача параметров в функцию
Можно ли сделать так, чтобы при совпадении переменных в функцие и основной программе, значения изменялись и в основной программе? И еще,...

2
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
27.05.2018, 08:16
проще всего - объявите его глобально перед всеми функциями.
1
1 / 1 / 3
Регистрация: 02.05.2018
Сообщений: 33
27.05.2018, 14:26  [ТС]
Я что-то всё равно не пойму..
Смотрите, у меня вот в этом цикле происходит запись хэша пароля в (unsigned int)HashData[i].
C++
1
2
for (int i = 0; i < HASH_SIZE; i++)
        cout << setw(2) << setfill('0') << (unsigned int)HashData[i];
Теперь мне нужно содержимое этой (переменной?) отправить в реестр. Для этого, как я понял, нужно написать эту переменную в 17 строке в пустом(на данный момент) параметре, так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int Adder::RegKey()
{
 
    //#define KEY_ALL_ACCESS;
     unsigned int r;
     LPCTSTR Kursah;
//   LPCSTR HashData;
     HKEY hregkey;
     Kursah = ".DEFAULT\\Software";
 
    // LPTSTR Adder;
     r = RegCreateKey(HKEY_USERS, Kursah, &hregkey);
     if (r != ERROR_SUCCESS)
         cout << "error\n";
     else
         cout << "good\n";
     r = RegSetValue(HKEY_USERS, Kursah, REG_SZ, , 0);
     if (r != ERROR_SUCCESS)
         cout << "error\n";
     else
         cout << "good\n";
    return 0;
}
Но при в вводе туда он ругается, что невозможно преобразовать из unsigned int в LPCSTR. Возможно, что я в теме недостаточно описал проблему. Я не знаю как передать в функцию записи всё это дело, чтобы работало.

P.S. Реестр потом, конечно же, закрою.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2018, 14:26
Помогаю со студенческими работами здесь

Передача параметров в функцию
Доброго времени суток. В ф-и есть несколько параметров-констант(const char*). Как передать в нее параметры, введенные с...

передача параметров в функцию
Здарвствуйте! Неделю изучаю С++, и в книге по которой изучаю сказано: &quot;Передавать параметры по значению только при необходимости и...

Передача параметров в функцию
Толи я чего-то туплю, толи всё же в мейн ошибка. Итак: есть функция, которая должна сообщать о результатах поиска изменением переменных...

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

Передача параметров в функцию
Как понять , что передаётся в функцию при такой записи : void Fun(str* &amp;r) при этом есть такие данные: struct str {int b; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru