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

crypto api не работает CryptGenKey - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись текста и генерация случайного числа http://www.cyberforum.ru/cpp-beginners/thread783667.html
Собственно задача такая: записать строки с рандомными числовым значением в некоторое количество создаваймых файлов. Файлы создаются без проблем, но по какой-то причине все соответственные рандомные числа одинаковы! Например, вывод должен быть примерно таким: baseline=63 baseline=58 baseline=67 ... Но он такой:
C++ Подсчитать среднее арифметическое тех элементов массива, что содержат четное число битов, не равных 1 В массиве целых чисел подсчитать среднее арифметическое тех элементов, что содержат четное число битов не равных 1. Вывести число в десятичном, шестнадцатеричном и двоичном форматах. Размер массива вводится пользователем во время выполнения программы. Массив заполняется случайными числами. Помогите написать программу ,пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread783660.html
Каков будет фактический аргумент для parameter source? C++
Предположим, что у нового foo класса естьprotype для перегруженного оператора назначения: void operator =(const foo& source); В операторе присваивания a= b, каков будет фактический аргумент для parameter source? a) a; b) b. 10) Предположим, что Вы осуществляете оператор назначения, copy конструктора и оператор + =. Для какой из этих функций "self-application" (где аргумент совпадает...
Существует небольшая функция, которая использует динамический класс bag (2) C++
Существует небольшая функция, которая использует динамический класс bag Код C++ 1.void quiz( ) 2.{ 3.bag::size_type i; // Line 1 4.bag b; // Line 2 5.b.insert(42); // Line 3 6.i = b.size( ); // Line 4 7.cout << i; // Line 5
C++ Существует небольшая функция, которая использует динамический класс bag http://www.cyberforum.ru/cpp-beginners/thread783646.html
Существует небольшая функция, которая использует динамический класс bag Код C++ 1.void quiz( ) 2.{ 3.bag::size_type i; // Line 1 4.bag b; // Line 2 5.b.insert(42); // Line 3 6.i = b.size( ); // Line 4 7.cout << i; // Line 5
C++ Удаление корня двоичного дерева двоичное дерево состоит только из ptr корень двоичного дерева как удалить этот корень? подробнее

Показать сообщение отдельно
Desu_Is_A_Lie
 Аватар для Desu_Is_A_Lie
62 / 62 / 3
Регистрация: 26.02.2012
Сообщений: 114
27.05.2013, 06:59     crypto api не работает CryptGenKey
Класс, коряво сделанный когда-то очень давно:
Кликните здесь для просмотра всего текста
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
[.cpp]
//---------------------------------------------------------------------------
#include    "CWinCrypt.h"
//---------------------------------------------------------------------------
 
CWinCrypt::CWinCrypt(BYTE *pbtKey, DWORD dwKeySize, ALG_ID sAlgID) : m_hProv(0), m_hKey(0)
{
    if (CryptAcquireContext(&this->m_hProv, NULL, MS_STRONG_PROV, PROV_RSA_FULL, 0))
    {
        HCRYPTHASH hHash;
 
        if (CryptCreateHash(this->m_hProv, CALG_MD5, 0, 0, &hHash))
        {
            if (CryptHashData(hHash, pbtKey, dwKeySize, 0))
            {
                CryptDeriveKey(this->m_hProv, sAlgID, hHash, 0, &this->m_hKey);
            }
            CryptDestroyHash(hHash);
        }
    }
 
    if (!this->m_hProv || !this->m_hKey)    {throw 0;}          // too lazy
}
//---------------------------------------------------------------------------
 
CWinCrypt::~CWinCrypt()
{
    if (this->m_hKey)   {CryptDestroyKey(this->m_hKey);}
    if (this->m_hProv)  {CryptReleaseContext(this->m_hProv, 0);}
}
//---------------------------------------------------------------------------
 
bool __stdcall CWinCrypt::Encrypt(BYTE *pbtData, DWORD *pdwDataSize, DWORD dwBufferSize, bool bFinal)
{
    return  CryptEncrypt(this->m_hKey, 0, bFinal, 0, pbtData, pdwDataSize, dwBufferSize);
}
//---------------------------------------------------------------------------
 
bool __stdcall CWinCrypt::Decrypt(BYTE *pbtData, DWORD *pdwDataSize, bool bFinal)
{
    return  CryptDecrypt(this->m_hKey, 0, bFinal, 0, pbtData, pdwDataSize);
}
//---------------------------------------------------------------------------
 
[.h]
//---------------------------------------------------------------------------
#ifndef     CWinCryptH
#define     CWinCryptH
//---------------------------------------------------------------------------
#include    <windows.h>
#include    <wincrypt.h>
//---------------------------------------------------------------------------
class       CWinCrypt
{
    public:
                                    CWinCrypt(BYTE *pbtKey, DWORD dwKeySize, ALG_ID sAlgID);
                                    ~CWinCrypt();
 
        bool        __stdcall       Encrypt(BYTE *pbtData, DWORD *pdwDataSize, DWORD dwBufferSize, bool bFinal = true);
        bool        __stdcall       Decrypt(BYTE *pbtData, DWORD *pdwDataSize, bool bFinal = true);
 
    private:
                                    CWinCrypt()             {}
                                    CWinCrypt(CWinCrypt&)   {}
                                    
        HCRYPTPROV                  m_hProv;
        HCRYPTKEY                   m_hKey;
};
//---------------------------------------------------------------------------
#endif
 
[example]
        CWinCrypt           cwincrptPCKG((BYTE*)"PASSWORD", 8, CALG_3DES);
 
        DWORD               dwDataSz        = (DWORD)tmemstrFile->Size;
        DWORD               dwBufSz         = dwDataSz;
        cwincrptPCKG.Encrypt(NULL, &dwBufSz, 0);
 
        BYTE                *pbtData        = new BYTE[dwBufSz];
        memcpy(pbtData, tmemstrFile->Memory, dwDataSz);
        cwincrptPCKG.Encrypt(pbtData, &dwDataSz, dwBufSz);
 
        std::FILE           *flOut          = std::fopen("C:\\_TEST\\test.pckg", "wb");
        std::fwrite(pbtData, 1, dwBufSz, flOut);
        std::fclose(flOut);
 
        delete[]            pbtData;
 
Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru