Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2015, 09:13   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию шифрование при использовании криптоапи

Нашел исходник для шифрования строки при помощи сэссионного ключа.
Код:
#include "stdafx.h"
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
HCRYPTPROV hProv;
HCRYPTKEY hSessionKey;

// Получение контекста криптопровайдера
if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
	std::cout<<"CryptAcquireContext" <<std::endl;;
}

std::cout << "Cryptographic provider initialized" << std::endl;

// Генерация сессионного ключа
if (!CryptGenKey(hProv, CALG_RC4, CRYPT_ENCRYPT | CRYPT_DECRYPT, &hSessionKey))
{
	std::cout<<"CryptGenKey" <<std::endl;;
}

std::cout << "Session key generated" << std::endl;

// Данные для шифрования
char string[]="Test";
DWORD count=strlen(string);

// Шифрование данных
if (!CryptEncrypt(hSessionKey, 0, true, 0, (BYTE*)string, 
    &count, strlen(string)))
{
	std::cout<<"CryptEncrypt" <<std::endl;
    std::cout << "Encrypted string1: " << string << std::endl;
}

std::cout << "Encryption completed" << std::endl;

// Тестовый вывод на экран
std::cout << "Encrypted string2: " << string << std::endl;	


int n;
std::cin>>n;
return 0;
}
Вывод:
Cryptographic provider initialize
CryptGenKey
Session key generated
CryptEncrypt
Encrypted string1: Test
Encryption completed
Encrypted string2: Test

Я хотел бы узнать, почему не выполняются функции
CryptGenKey() и CryptEncrypt().
polin11 вне форума Ответить с цитированием
Старый 07.06.2015, 09:38   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,357
По умолчанию

Цитата:
Сообщение от polin11 Посмотреть сообщение
Я хотел бы узнать, почему не выполняются функции
CryptGenKey() и CryptEncrypt().
Похоже, у вас неправильные аргументы у вызова CryptGenKey().
Ну а без ключа и CryptEncrypt не будет работать.

Прочитайте документацию о том, что должен содержать третий параметр у CryptGenKey
waleri вне форума Ответить с цитированием
Старый 07.06.2015, 10:20   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я хотел бы узнать, почему не выполняются функции
CryptGenKey() и CryptEncrypt().
А чего ж ты не описал обработчик ошибок?
Код:
// Генерация сессионного ключа
SetLastError(0);
if (!CryptGenKey(hProv, CALG_RC4, CRYPT_ENCRYPT | CRYPT_DECRYPT, &hSessionKey))
{
	std::cout<<"CryptGenKey" <<std::endl;;
} else {
	std::cout<<"CryptGenKey Error code: "<< GetLastError() <<std::endl;;
}
А потом уже и смотреть по коду ошибки что она означает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2015, 14:23   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,773
По умолчанию

Цитата:
А чего ж ты не описал обработчик ошибок?
Потому что
Цитата:
Нашел исходник для шифрования строки при помощи сэссионного ключа.
p51x вне форума Ответить с цитированием
Старый 07.06.2015, 18:04   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Потому что
А-а-а... Ну да. копипастЭ... Бич современного интернет комьюнити.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании ajax linkoln_7 JavaScript, Ajax 8 17.04.2015 19:32
Ошибка при использовании vfprintf в dll при stdout CHERTS Visual C++ 1 25.10.2013 15:18
Cинтаксис кода при использовании Or Brucebelg Microsoft Office Excel 3 30.11.2011 13:06
Проблема при использовании CreatProcess иннокент Win Api 6 18.08.2010 19:11
Проблемка при использовании регрессии 500_pinguins Microsoft Office Excel 0 16.06.2009 08:17