Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить парники, закрывающие огурцы https://www.cyberforum.ru/ cpp-beginners/ thread1595087.html
Нужно помочь с задачей. Задачу сдавать на зачёт, я не знаю как её сделать; она мне кажется очень сложной. Пишу на С++ Задача о огурцах. ///// Задано поле n x m квадратных ячеек, в каждой из которых могут находиться посадки огурцов. Необходимо построить парники, закрывающие огурцы. Парники могут быть только прямоугольной формы, только со сторонами, параллельными сторонам поля. Стоимость...
C++ Найти наибольший отрезок из совершенных чисел
Дано натуральное число n, целые числа a1....an. Рассмотреть отрезки последовательности (последовательности членов, идут рядом), состоящие из совершенных чисел. Получить наибольшую из длин этих отрезков. (Натуральное число называется доскональным, если оно равно сумме своих делителей, за исключением самого себя. Например, 6 = 1 + 2 + 3.) Определить функцию, позволяющую распознавать совершенные...
C++ Разделение русских и английских букв Написать функцию разделения русских и английских букв в отдельные строки. #include <iostream> #include <cstring> void enru(char stroka; char &enn; char &ruu) { int e = 0; int r = 0; for (int i = 0; i < strlen(stroka); i++) { https://www.cyberforum.ru/ cpp-beginners/ thread1595070.html C++ Класс "Автобус" #include "stdafx.h" #include <iostream> using namespace std; class Bus{ int number; int model; public: void setnumber(int); int getnumber(); https://www.cyberforum.ru/ cpp-beginners/ thread1595064.html
Code::Blocks ругается на auto и decltype C++
Написал небольшую программку, на среде Eclipse Mars все работает очень даже отлично, а вот на Code::Blocks выдает следующее : "error: expected type-specifier before 'decltype'" и тому подобное... #include <iostream> using namespace std; template<typename t1, typename t2> auto sum(t1 a, t2 b) -> decltype(a+b) {
C++ Объясните простой код https://www.cyberforum.ru/ cpp-beginners/ thread1595047.html
int a = (b = 5, b + 5); что это за запись такая.
C++ Как переместить минимальный элемент массива на первое место? https://www.cyberforum.ru/ cpp-beginners/ thread1595041.html
Подскажите пожалуйста как сделать Если номер минимального элемента больше восьми поставить его на первое место, иначе - на последнее место в массиве.
Указатель на функцию C++
Такая сточка кода: double (*ptr)(int, int); в контексте: double foo(int x, int y) { return x+y; }
C++ Класс "Дробное число" https://www.cyberforum.ru/ cpp-beginners/ thread1595013.html
Объявить класс «Дробное число» и написать подпрограммы для сложения, вычитания, умножения и деления переменных данного типа. помогите с программой! нужно сдать лабораторку. задание нужно было сделать на делфи и я сделал. но препод докопался сказал сделай еще на с++. а в этой среде вообще не шарю((
C++ Расположить элемент, обладающий наименьшим по модулю значением, в правом нижнем углу матрицы https://www.cyberforum.ru/ cpp-beginners/ thread1595005.html
С помошью допустимых преобразований добиться того,чтобы один из элементов матрицы,обладающим наименьшим по модулю значением,расположить в правом нижнем углу матрицы.
C++ Дана целочисленная прямоугольная матрица
Определить: 1)количество строк,содержащих хотя бы один нулевой элемент; 2)номер столбца,в котором находиться самая длинная серия одинаковых элементов.
C++ Формирование массива с использованием функции https://www.cyberforum.ru/ cpp-beginners/ thread1594965.html
#include <math.h> #include <iostream> using namespace std; typedef int (*pfur)(int); int *massiv(int,pfur); int f(int x); int main() { int n,i,*a; cout<<"vvedite n"; cin>>n;
2 / 2 / 0
Регистрация: 29.04.2020
Сообщений: 17
30.04.2020, 22:30 0

AES шифрование - C++ - Ответ 14492845

30.04.2020, 22:30. Показов 24786. Ответов 17
Метки (Все метки)

Ответ

nmcf, Всё,разобрался.Спасибо за дискуссию. Лишнее уберу.Программа, вроде, работает корректно.
Готовый код, кому нужен:
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <wincrypt.h>
#include <bcrypt.h>
#include <string.h>
#include <iostream>
#include <tchar.h>
#include <io.h>
#include <vector>
#include <fstream>
#include <stdio.h>
#pragma warning(disable: 4018)
 
 
BYTE aBuf[512]; //буфер для данных (размер произвольный,
                //кратный 16)
TCHAR szBuff[100];
DWORD dwBuflen; //длина буфера
TCHAR szPass[100]; //строка для пароля
typedef unsigned long type;
BCRYPT_ALG_HANDLE hAlg;
BCRYPT_HASH_HANDLE hHashB;
BCRYPT_KEY_HANDLE hKey;
 
 
CHAR pass[65];
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
    
    int razmer = 0;
    printf("введите размер ключа (128,292,256)");
    cin >> razmer;
    razmer /= 8;
    TCHAR* szpass = new TCHAR[razmer];
 
 
    char filein[256];
    cout << "задайте путь к  исходному файлу (например: D:\\2\\1.txt) ";
    cin >> filein;
 
    char fileout1[256];
    cout << "задайте путь к файлу для хранения результата кодирования (например: D:\\2\\2.txt) ";
    cin >> fileout1;
 
    char fileout2[256];
    cout << "задайте путь к файлу для храниения результата декодирования (например: D:\\2\\3.txt) ";
    cin >> fileout2;
 
 
    FILE* in = fopen(filein, "rt");//Открывает текстовый файл для чтения
 
    FILE* out1 = fopen(fileout1, "wt"); //создает текстовый файл для записи
 
    FILE* out2 = fopen(fileout2, "wt");//создает текстовый файл для записи
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    type size = _filelength(_fileno(in));
    type buffSize = size / 16;
    BYTE* buffText = new BYTE[512];
    DWORD dwBuflen = 16;
    CHAR pass[65];
    cout << "Введите пароль :";
    cin >> pass; cout << endl;
    HCRYPTPROV hProv; //дескриптор криптопровайдера
    HCRYPTKEY hKey; //дескриптор ключа, созданного из хэш-кода
    HCRYPTHASH hHash; //дескриптор хэш-объекта
    HCRYPTPROV hCryptProv;
  
    
        if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT))
        {
            std::cout << "Error\n";
            return 1;
        }
 
        if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash))
        {
            std::cout << "Error\n";
            CryptReleaseContext(hProv, 0);
            return 1;
        }
 
        if (!CryptHashData(hHash, (BYTE*)pass, strlen(pass), 0))
        {
            std::cout << "Error\n";
            CryptDestroyHash(hHash);
            CryptReleaseContext(hProv, 0);
            return 1;
        }
 
        if (!CryptDeriveKey(hProv, CALG_AES_192, hHash, CRYPT_EXPORTABLE, &hKey))
        {
            std::cout << "Error\n";
            CryptDestroyHash(hHash);
            CryptReleaseContext(hProv, 0);
            return 1;
        }
 
        std::ifstream ifs(filein, std::ifstream::binary);
        ifs.seekg(0, ifs.end);
        int len = ifs.tellg();
        ifs.seekg(0);
 
        std::vector<char> data(len + 10240);
 
        ifs.read(data.data(), len);
        ifs.close();
 
        DWORD datalen = len;
        if (!CryptEncrypt(hKey, NULL, true, 0, reinterpret_cast<BYTE*>(data.data()), &datalen, data.size()))
        {
            std::cout << "Error\n";
        }
        else
        {
            std::ofstream ofs(fileout1, std::ifstream::binary);
            ofs.write(data.data(), datalen);
            ofs.close();
        }
 
        CryptDestroyHash(hHash);
        CryptDestroyKey(hKey);
        CryptReleaseContext(hProv, 0);
 
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
 
        if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT))
        {
            std::cout << "Error\n";
            return 1;
        }
 
        if (!CryptCreateHash(hProv, CALG_SHA_256, 0, 0, &hHash))
        {
            std::cout << "Error\n";
            CryptReleaseContext(hProv, 0);
            return 1;
        }
 
        if (!CryptHashData(hHash, (BYTE*)pass, strlen(pass), 0))
        {
            std::cout << "Error\n";
            CryptDestroyHash(hHash);
            CryptReleaseContext(hProv, 0);
            return 1;
        }
 
        if (!CryptDeriveKey(hProv, CALG_AES_192, hHash, CRYPT_EXPORTABLE, &hKey))
        {
            std::cout << "Error\n";
            CryptDestroyHash(hHash);
            CryptReleaseContext(hProv, 0);
            return 1;
        }
 
        ifs.open(fileout1, std::ifstream::binary);
        ifs.seekg(0, ifs.end);
        len = ifs.tellg();
        ifs.seekg(0);
 
        data.resize(len + 10240);
 
        ifs.read(data.data(), len);
        ifs.close();
 
        datalen = len;
        if (!CryptDecrypt(hKey, NULL, true, 0, reinterpret_cast<BYTE*>(data.data()), &datalen))
        {
            std::cout << "Error\n";
        }
        else
        {
            std::ofstream ofs(fileout2, std::ifstream::binary);
            ofs.write(data.data(), datalen);
            ofs.close();
        }
        CryptDestroyHash(hHash);
        CryptDestroyKey(hKey);
        CryptReleaseContext(hProv, 0);
        system("pause");
    
}


Вернуться к обсуждению:
AES шифрование C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2020, 22:30
Готовые ответы и решения:

Aes шифрование
Здравствуйте! Зашифровываю файл и вывожу частоту вхождения символов. Такой вопрос,какую...

Хэширование md5 и шифрование AES
Собственно нужно реализовать проверку пароля, его хранить в открытом виде конечно нельзя, хочу хэш...

Cryptopp шифрование AES ECB
Добрый день. Есть код, выполняющий шифрование Rijndael ECB (128 бит): #include &lt;iostream&gt; ...

AES в C++
Привет, где можно найти рабочую функцию шифрования/дешифрования AES в С++ ? Работаю в builder...

17
30.04.2020, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2020, 22:30
Помогаю со студенческими работами здесь

AES. Расшифровка
Допустим, у меня есть такие функции AES. /* алгоритм AES-256 размер блока - 128 бит размер ключа...

AES-128
Пишу программное средство шифрования файлов на курсовую .Сделал расширение ключа ExpKey но мой ключ...

AES библиотека
Какую библиотеку можно использовать для работы с AES на C++ (Windows)?

Как реализовать AES на С++
У кого-нибудь есть рабочий код с функциями шифровки/дешифровки. А то нигде не могу найти...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru