| |
简单实现强大的加密功能——CryptoAPI
|
日期:2004年7月4日 作者:清风网络学院
查看:[大字体 中字体
小字体]
|
CryptoAPI是Microsoft提供的加密应用程序接口,他其实是一组函数,他为许多高级安全性服务提供了基础,包括用于电子商务的SET,用于加密客户机/服务器消息的PCT,用于在各个平台之间来回传递机密数据和密钥的PFX,代码签名等等。 支持这种功能的主要有2000/XP(98和ME下不详)
其配置信息(密钥)主要在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \ Cryptography \Defaults HKEY_CURRENT_USER\ Software \ Microsoft \ Cryptography \Providers 中,
下面以两个文件加密与解密的C程序片断为例,演示一下CryptoAPI的强大功能。这两个程序均为Win32控制台应用,程序省略了出错处理,实际运行时请加入。
----1. 文件加密
#include #include #include #include
//确定使用RC2块编码或是RC4流式编码,这就是CryptoAPI支持的两种基本编码方式
#ifdef USE_BLOCK_CIPHER #define ENCRYPT_ALGORITHMCALG_RC2 #define ENCRYPT_BLOCK_SIZE8 #else #define ENCRYPT_ALGORITHMCALG_RC4 #define ENCRYPT_BLOCK_SIZE1 #endif
void CAPIDecryptFile(PCHAR szSource, PCHAR szDestination, PCHAR szPassword);
void _cdecl main(int argc, char *argv[]) { PCHAR szSource= NULL; PCHAR szDestination = NULL; PCHAR szPassword= NULL;
// 验证参数个数 if(argc != 3 && argc != 4) { printf(“USAGE: decrypt < source file > < dest file > [ ]\n"); exit(1); }
//读取参数. szSource= argv[1]; szDestination = argv[2]; if(argc == 4) { szPassword = argv[3]; } CAPIDecryptFile(szSource, szDestination, szPassword); }
/*szSource为要加密的文件名称, szDestination为加密过的文件名称, szPassword为加密口令*/ void CAPIEncryptFile(PCHAR szSource, PCHAR szDestination, PCHAR szPassword) { FILE *hSource = NULL; FILE *hDestination = NULL; INT eof = 0; HCRYPTPROV hProv = 0; HCRYPTKEY hKey = 0; HCRYPTKEY hXchgKey = 0; HCRYPTHASH hHash = 0; PBYTE pbKeyBlob = NULL; DWORD dwKeyBlobLen; PBYTE pbBuffer = NULL; DWORD dwBlockLen; DWORD dwBufferLen; DWORD dwCount;
hSource= fopen(szSource,“rb"));// 打开源文件 hDestination = fopen(szDestination,“wb") ;//.打开目标文件 // 连接缺省的CSP,密码服务提供者模块(CSP),这是通过WIN系统中捆绑的RSA Base Provider实现的。 CryptAcquireContext(&hProv, NULL, NULL,
上一篇:再谈Unicode漏洞的攻击手段与防护策略
下一篇:NIS网络信息系统简介
|
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
| |