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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
nickrb
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 37
25.04.2011, 19:37     cryptoapi, шифрование, 3DES #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;
}
не знаю почему, на выходе получаю входные не зашифрованные данные
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2011, 19:37     cryptoapi, шифрование, 3DES
Посмотрите здесь:

C++ Шифрование
шифрование C++
cryptoapi, SHA-1 C++
C++ Шифрование
C++ Шифрование
C++ c++ шифрование
Литература по получению MD5 файла в C++ с CryptoApi C++
Хеширование MD5 CryptoAPI C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Saiberg
 Аватар для Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
26.04.2011, 19:53     cryptoapi, шифрование, 3DES #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;
}
Yandex
Объявления
26.04.2011, 19:53     cryptoapi, шифрование, 3DES
Ответ Создать тему
Опции темы

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