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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
nickrb
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 37
#1

cryptoapi, шифрование, 3DES - C++

25.04.2011, 19:37. Просмотров 3043. Ответов 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
BYTE* Encrypt(char *str, char *password)
{
    HCRYPTPROV hCryptProv = 0; 
    HCRYPTKEY hKey = 0; 
    HCRYPTHASH hHash = 0; 
    BYTE    *pBuffer = 0;
    DWORD   dwBufferLen = strlen(str);
 
CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_SCHANNEL, 0);
CryptCreateHash(hCryptProv, CALG_SHA, 0, 0, &hHash);
CryptHashData(hHash, (BYTE*)password, strlen(password), 0);
CryptDeriveKey(hCryptProv, CALG_3DES, hHash, 0, &hKey);
CryptEncrypt(hKey, 0, TRUE, 0, 0, &dwBufferLen, strlen(str));
 
pBuffer = (BYTE*)malloc(dwBufferLen);
memcpy(pBuffer, str, dwBufferLen);
CryptEncrypt(hKey, 0, TRUE, 0, pBuffer, &dwBufferLen, strlen(str));
 
CryptDestroyKey(hKey); 
CryptDestroyHash(hHash);
CryptReleaseContext(hCryptProv,0);
 
return pBuffer;
}
не знаю почему, на выходе получаю входные не зашифрованные данные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2011, 19:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос cryptoapi, шифрование, 3DES (C++):

cryptoapi, SHA-1 - C++
char *str = new char; //данные HCRYPTPROV hCryptProv = 0; HCRYPTHASH hHash = 0; gets(str); DWORD count=strlen(str); ...

Хеширование MD5 CryptoAPI - C++
Решал задачу на хеширование текста алгоритмом MD5 Дошел до такого: #include "stdafx.h" #include <iostream> #include <windows.h> ...

Литература по получению MD5 файла в C++ с CryptoApi - C++
Помогите пожалуйста, требуется написать программу, которая выводит на экран хеш файла через CryptiApi. На сайте MSDN есть статейка: Example...

CryptoAPI "хеш не может быть использовано в указанном состоянии" - C++
Здравствуйте. Возникает вышеуказанная ошибка (номер 8009000C) при вызове CryptEncrypt. Хотелось бы разобраться, в чём проблема. Мне нужно...

Шифрование текстового файла с помощью алгоритма 3DES - C#
Написать программу, которая зашифровывает и расшифровывает текстовый файл, с помощью алгоритма 3DES. Понимаю, что нужно делать на...

Шифрование при использовании CryptoAPI - C++ WinAPI
Нашел исходник для шифрования строки при помощи сессионного ключа. #include "stdafx.h" #include <windows.h> #include <wincrypt.h> ...

1
Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
26.04.2011, 19:53 #2
проца для расшифровки. может поможет)

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
DWORD Decode3Des(BYTE* input, DWORD* szInput, BYTE* key1, BYTE* key2, BYTE* key3, BYTE* iVector)
{
    HCRYPTPROV hProv;
    CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
    if(CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)){
        
        BLOBHEADER keyHeader;
        keyHeader.bType = PLAINTEXTKEYBLOB;
        keyHeader.bVersion = CUR_BLOB_VERSION;
        keyHeader.reserved = 0;
        keyHeader.aiKeyAlg = CALG_3DES;
 
        BYTE bKey[36];
        memset(bKey, 0, 36);
        memcpy(bKey, &keyHeader, sizeof(keyHeader));
        bKey[sizeof(keyHeader)] = 24;
        memcpy(bKey + sizeof(keyHeader) + sizeof(DWORD), key1, 8);
        memcpy(bKey + sizeof(keyHeader) + sizeof(DWORD) + 8, key2, 8);
        memcpy(bKey + sizeof(keyHeader) + sizeof(DWORD) + 16, key3, 8);
 
 
        DWORD result=0;
 
        HCRYPTKEY hKey;
        if(CryptImportKey(hProv, bKey, sizeof(keyHeader) + sizeof(DWORD) + 24, NULL, 0, &hKey)){
         
            DWORD desMode = CRYPT_MODE_CBC;
            CryptSetKeyParam(hKey, KP_MODE, (BYTE*)&desMode, 0);
            
            CryptSetKeyParam(hKey, KP_IV, iVector, 0);
        
            if(CryptDecrypt(hKey, 0, TRUE, 0, input, szInput)) result = *szInput;
            
                
            CryptDestroyKey(hKey);
 
        }
 
        CryptReleaseContext(hProv,0);
 
        return result;
    }
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2011, 19:53
Привет! Вот еще темы с ответами:

Asa k8 поддержка 3des - Cisco
Добрый вечер. У меня немого не стыкуется... sh ver: System image file is "disk0:/asa825-k8.bin" Licensed features...

Лишние символы после декодирования 3DES... - PHP
Здравствуйте ! У меня такая проблема: Появляются лишние символы после декодирования и 3DES. Вот исходник: <? $key = "this is a...

Нужен пример реализации 3DES в PHP - PHP
Мне нужен пример реализации 3DES в PHP

3Des кодирование, декодирование и обработка входных данных - PHP
Приветствую, в запросе есть строка, зашифрованная 3Des. Нужно получить эту строку и далее распознать в таком формате: ...


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

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

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