Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 24.02.2018, 23:20   #1
busyandr
 
Регистрация: 22.02.2018
Сообщений: 5
По умолчанию CryptoAPI

Подскажите как реализовать: Вывел список алгоритмов хеширования, нужно сделать так, чтобы пользователь мог выбрать какой алгоритм использовать, чтобы посчитать хеш файла( имя файла пользователь вводит с клавиатуры)
Код:
// ConsoleApplication6.cpp: определяет точку входа для консольного приложения.
//
#pragma comment(lib,"advapi32.lib")
#include"stdafx.h""
#include <string.h>
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <Wincrypt.h>
#include <iostream>
using namespace std;
struct CRYPT_NAME
{
	ALG_ID      aiAlgid;
	DWORD       dwBits;
	DWORD       dwNameLen;
	char        szName[20];
};

int main()
{
	HCRYPTPROV  hProv;         
	DWORD       i, k;
	BYTE        pbData[1000];        
	DWORD       cbData;
	DWORD       dwFlags;
	CHAR        *pszAlgType = NULL;
	CRYPT_NAME  *pcn;

	CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);

	// Enumerate the supported algorithms.
	for (i = 0, k = 0; ; i++)
	{
		//  CRYPT_FIRST При первом прохождении
		if (i == 0)
			dwFlags = CRYPT_FIRST;
		else
			dwFlags = 0;

		// Получение информации об алгоритме.
		cbData = 1000;
		if (!CryptGetProvParam(hProv, PP_ENUMALGS, pbData, &cbData, dwFlags))
		{
			if (GetLastError() == ERROR_NO_MORE_ITEMS)
				// Exit the loop.
				break;
			else
			{
				printf("Error %x reading algorithm!\n", GetLastError());
				return -1;
			}
		}

		// Извлекаем инфу из pbData
		pcn = (CRYPT_NAME*)pbData;

		if (GET_ALG_CLASS(pcn->aiAlgid) == ALG_CLASS_HASH)
			printf("%d. %s (%d bit)\n", ++k, pcn->szName, pcn->dwBits);
	}
	system("pause");
	return 0;
}
busyandr вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CryptoAPI JPCool Общие вопросы Delphi 6 04.07.2016 16:58
CryptoApi Дмитрий5040 Общие вопросы Delphi 1 07.02.2013 01:36
Сертификат CryptoApi Dianochka Помощь студентам 0 13.05.2012 11:39
функция CryptoAPI mira_m Помощь студентам 5 14.12.2011 21:51
CryptGenRandom,CryptoAPI tiger Помощь студентам 0 24.05.2011 23:10


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS