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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.02.2018, 00:20   #1
busyandr
 
Регистрация: 22.02.2018
Адрес: Москва
Сообщений: 5
Репутация: 10
По умолчанию 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


11:52.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.