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

Crypto api RC2 - C++

Войти
Регистрация
Восстановить пароль
 
frying
Сообщений: n/a
02.05.2012, 21:01     Crypto api RC2 #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
#define _WIN32_WINNT 0x0400
 
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <Windows.h>
#include <WinCrypt.h>
#pragma comment(lib, "advapi32.lib")
 
using namespace std;
 
int main(){
    HCRYPTPROV hProv = 0;
    HCRYPTKEY hSessionKey = 0;
 
    // Получение контекста криптопровайдера
    if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
      cout << "CryptAcquireContext Error";
      cin.get();
      //return 1;
    } else {
        std::cout << "Cryptographic provider initialized" << std::endl;
    }
    // Генерация сессионного ключа
    if (!CryptGenKey(hProv, CALG_RC2, 40<<16, &hSessionKey)) {
      cout << "CryptGenKey Error";
      cin.get();
      //return 1;
    } else {
        std::cout << "Session key generated" << std::endl;
        std::cout << &hSessionKey << std::endl;
    }
 
    ifstream ifs;
    ifs.open("out.txt");
    ofstream ofs;
    ofs.open("in.txt");
    if (!ifs.is_open() || !ofs.is_open()) {
        cout << "File is not exist" << endl;
    } else {
        while (!ifs.eof())
        {
            const size_t buf3_size = 5;
            char buf3[buf3_size] = { 0 };
            DWORD count3 = strlen(buf3);
            ifs.read(buf3, buf3_size);
            bool flag = ifs.eof();
            // Шифрование данных
            if (!CryptEncrypt(hSessionKey, 0, flag, 0, (BYTE*)buf3, &count3, 40)) {
                cout << "CryptEncrypt Error";
                cin.get();
                return 1;
            } else {
                for (size_t i = 0; i < ifs.gcount(); ++i)
                {
                    ofs << buf3[i];
                }
            }
        }
        ifs.close();
        ofs.close();
    }
    cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 21:01     Crypto api RC2
Посмотрите здесь:

С++ Win32 API C++
C++ С++ и API
C++ Hello World и API
C++ WIN API
API C++
справочник api C++
API & C++ C++
MessageBox API C++
crypto api не работает CryptGenKey C++
C++ API справочник
C++ Building Crypto++ процесс подключения данной библиотеки
Свое API C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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