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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
frying
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 2
#1

Crypto api RC2 - C++

02.05.2012, 21:01. Просмотров 905. Ответов 0
Метки нет (Все метки)

Доброго времени суток!
Проблема такая: почему-то зашифрованные данные ничем не отличаются от исходных. В чём ошибка не понятно.
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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 21:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Crypto api RC2 (C++):

crypto api не работает CryptGenKey - C++
http://www.rsdn.ru/article/crypto/usingcryptoapi.xml беру пример из этой статьи HCRYPTPROV hProv; HCRYPTKEY hSessionKey; //...

Building Crypto++ процесс подключения данной библиотеки - C++
Здравствуйте, Возникла проблема подключения криптографической библиотеки Crypto++(CryptoPP) к проекту Xcode. Опишите, пожалуйста,...

Crypto++ и "write of address 00000008" - C++
Пытаюсь разобраться с библиотекой Crypto++ и шифрованием AES (CBC). Просмотрела кучу примеров вида: AnsiString...

Написать приложение с использованием алгоритма RC2 Crypto Service Provider - C#
Алгоритм RC2 Crypto Service Provider, длинна ключа 64 бита. Создать приложение windows forms. Ввод шифруемого текста в окно ввода....

AES-128 (Crypto API) не шифрует - Delphi
Написал библиотеку, реализующую шифрование входного файла алгоритмом AES-128 с помощью Crypto API. Вот ее код: library Project1; ...

Crypto API и С#. Нужно сделать авторизацию. - C#
Возникла надобность написать вэб интерфейс к программулине написаной на С++, и Visual Basic. Для работы с прогой сей надобно...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2012, 21:01
Привет! Вот еще темы с ответами:

О длительности сеанса в Windows Server 2003 RC2 - Windows Server
Всем доброго времени суток. Форумчане, у меня к вам вопрос: Имеется компьютер с установленной Windows Server 2003 RC2 и выполняющий роль...

Windows Vista RC2: скоро начало продаж - Софт
Вышла вторая предвыпускная версия Windows Vista. Эта версия является последним релизом перед выпуском билда RTM (Release-to-Manufacturing)....

Crypto++ - Криптография
// elgamal.cpp - written and placed in the public domain by Wei Dai #include &quot;dll.h&quot; #include &quot;pch.h&quot; #include &quot;elgamal.h&quot; #include...

Библиотека Crypto - Python
Где можно найти библиотеку Crypto под win? from Crypto.Util.number import * Все время выдает ошибку ImportError: No module named...


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

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

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