《ASCE1885的信息安全》のCryptoAPI入门

CryptoAPI是微软提供的一组加密函数,其功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。CryptoAPI处于应用程序和密码服务提供者CSP之间。CryptoAPI的编程模型和Windows系统的图形设备接口GDI类似,其中的CSP相当于图形设备驱动程序,加密硬件等同于图形硬件。

每个CSP都是一个独立的模块,可以执行所有的密码操作。CSP负责创建和销毁密钥并提供各种密码操作,每个CSP提供不同的CryptoAPI实现,并通过CSP名称来区别。CSP可以由软件实现,也可以由硬件实现,比如常见的USBKEY等。

CSPWindows安全应用的基础,在Windows操作系统上,HTTPS安全浏览(即SSL安全数据通信)、安全隧道(如Ipsec)、安全电子邮件、Windows智能卡登录等,都必须有CSP参与密码运算。

CryptoAPI由简单消息函数、低层消息函数、基本加密函数、证书编解码函数和证书库管理函数5部分组成。其中前三者可用于对敏感信息进行加密或签名处理,从而保证网络传输信息的保密、防篡改、防抵赖等;后两者是对证书的操作,实现身份的认证。

搭建CryptoAPI环境很简单,只需要包含wincrypt.h头文件,同时链接Crypto32.lib库即可。具体步骤如下:

1)新建Visual C++2008 Win32 console工程CryptoTest

2)在CryptoTest.cpp文件中的main函数添加代码如下:

#include "stdafx.h"

#include <windows.h>

#include <wincrypt.h>

#include <iostream>

int _tmain(int argc, _TCHAR* argv[])

{

HCRYPTPROV hCryptProv;

char ErrInfo[1024];

if(!CryptAcquireContext(&hCryptProv,

NULL, NULL, PROV_RSA_FULL,

CRYPT_SILENT | CRYPT_VERIFYCONTEXT))

{

sprintf(ErrInfo, "###CryptAcquireContext Error: ErrorCode:0x%x", GetLastError());

printf("%s/n", ErrInfo);

return -1;

}

printf("运行正常/n");

CryptReleaseContext(hCryptProv, 0);

system("pause");

return 0;

}

3)在项目的配置属性中的链接器/输入中的附加依赖项中添加“Crypto32.lib”库。

4)编译该项目即可。

参考文献:《精通PKI网络安全认证技术与编程实现》

你可能感兴趣的:(信息安全)