Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
neit95
14 / 12 / 5
Регистрация: 24.02.2014
Сообщений: 93
Завершенные тесты: 1
1

CryptoAPI "хеш не может быть использовано в указанном состоянии"

11.03.2016, 09:19. Просмотров 516. Ответов 1

Здравствуйте. Возникает вышеуказанная ошибка (номер 8009000C) при вызове CryptEncrypt. Хотелось бы разобраться, в чём проблема.
Мне нужно было не поточное AES шифрование. Пользовался примером от сюда, также пользовался информацией от сюда.
Теперь что делал (весь код соотв. приводить не буду, только обращения к CryptoAPI):
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
HCRYPTPROV hCryptProv;
HCRYPTHASH hHash;
HCRYPTKEY hCryptKey;
CryptAcquireContext(&hCryptProv, NULL, NULL,
        PROV_RSA_AES, CRYPT_VERIFYCONTEXT);
CryptCreateHash(hCryptProv, CALG_MD5, 0, 0,
        &hHash);
// Пароль в AnsiString строке strKey
CryptHashData(hHash, strKey.c_str(),
        strKey.Length(), 0);
CryptDeriveKey(hCryptProv, CALG_AES_128,
        hHash, 0, &hCryptKey);
 
// dwDataLen - размер шифруемых данных.
// abData - указатель на шифруемые данные.
// Данные выровнены по границе 16 байт. 
DWORD dwBlockCount=dwDataLen/16;
byte buf[24];
DWORD dwSz=dwDataLen;
for(int i=0; i<dwBlockCount; i++) {
    bool blnFinal=(i==dwBlockCount-1);
    memcpy(&buf, &abData[i*16], 16);
    if(!CryptEncrypt(hCryptKey, hHash, blnFinal, 0, buf,
        &dwSz, sizeof(buf)))
    {
        // Здесь соотв. получаем вышеуказанное сообщение об ошибке.
        AnsiString strM=SysErrorMessage(GetLastError());
    }
// блок памяти назад пока не копировал из тех соображений, что пока не шифруется даже 1-ый блок.
}
Все процедуры кроме CryptEncrypt отрабатывают нормально (проверял, проверку целенаправленно не стал включать в вышеуказанный код).
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2016, 09:19
Ответы с готовыми решениями:

Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*".
Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой...

Перегрузка оператора "++" и "--" в чем может быть причина нарушение прав доступа?
Вот такой вот код #include &lt;iostream&gt; class d { private: int size ; char *n; public: ...

Вылетает "strcpy_s", в чем может быть ошибка?
Все перепробовал, по сути ошибки не должно быть, компилируется нормально, но только доходит до того...

Ошибка "Память не может быть read"
При вводе кол-ва учеников больше 2 ух выдаёт после ввода такую ошибку. Вот код: #include...

Написать программу, которая заменяет в указанном слове все буквы "b" на сочетание "ky"
Написать программу, которая заменяет в указанном слове все буквы &quot;b&quot; на сочетание &quot;ky&quot;....

1
neit95
14 / 12 / 5
Регистрация: 24.02.2014
Сообщений: 93
Завершенные тесты: 1
13.03.2016, 17:48  [ТС] 2
Появилось предположение, что ошибка из-за разницы в размере хеша и блока в AES. Кто-нибудь знает хеши на 128 бит?
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2016, 17:48

Память не может быть "written"
Помогите найти ошибку в следующем коде: На этапе вхождения в функцию &quot;vvod_vseh&quot;, а именно при...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Массив фиксированного размера может быть динамическим? Что такое "динамический массив"?
есть код string line; char *dup=new char; Я так понимаю создается динамический массив...


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

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

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