📄 crypto.cpp
字号:
// crypto.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <wincrypt.h>
#include <cstdlib>
#include <windows.h>
#include <iostream>
//#pragma comment(lib,"Advapi32.lib")
#include <malloc.h>
//#pragma comment(lib,"crypt32.lib")
using namespace std;
////////////////////
void designmenu()
{
cout<<"#####################################################################\n";
}
////////////////////////
void design()
{
cout<<"========================================================================\n";
}
///////////////////////
/////////
int ViewFuncProvider()
{
//inicial function cryptoapi
WORD dwIndex=0;
DWORD dwType;
DWORD cbName;
char pszName[256];
while (CryptEnumProviders(dwIndex, NULL, 0, &dwType, NULL, &cbName))
{
if (!cbName)
break;
//if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
//return 0;
if (!CryptEnumProvidersA(dwIndex++, NULL, 0, &dwType, pszName, &cbName))
{
cout<<"Error CryptEnumProviders"<<endl;
return 0;
}
cout<<"--------------------------------"<<endl;
cout<<"Provider name: "<<pszName<<endl;
cout<<"Provider type: "<<dwType<<endl;
LocalFree(pszName);
}
system("pause");
}
////////
////////
int ViewRegProvider()
{
HKEY hKey;
LPTSTR lpszName;
LONG lReturn;
DWORD dwIndex = 0;
DWORD dwNameLen, dwMaxNameLen;
if ( RegOpenKeyExA( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Cryptography\\Defaults\\Provider", 0, KEY_ALL_ACCESS, &hKey ) == ERROR_SUCCESS )
{
RegQueryInfoKey( hKey, NULL, NULL, NULL, NULL, &dwMaxNameLen, NULL, NULL, NULL, NULL, NULL, NULL );
dwMaxNameLen++;
lpszName = (LPTSTR)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, dwMaxNameLen );
do
{
dwNameLen = dwMaxNameLen;
lReturn = RegEnumKeyEx( hKey, dwIndex, lpszName, &dwNameLen, NULL, NULL, NULL, NULL );
if ( lReturn != ERROR_NO_MORE_ITEMS )
{
cout<<&lpszName<<endl;//恹忸滂
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -