资源简介
crytoapi用于信息的加密传输,收方通过解密代码进行解密。是一种很通用的加解密方式。
代码片段和文件信息
#include
#include
#define _WIN32_WINNT 0X0400
#include
#include
#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
#define KEYLENGTH 0x00800000
#define ENCRYPT_ALGORITHM CALG_RC2
#define ENCRYPT_BLOCK_SIZE 8
void HandleError(char *s);
BOOL CryEncryptFile(
PCHAR szSource
PCHAR szDestination
PCHAR szPassword);
BOOL CryDecryptFile(
PCHAR szSource
PCHAR szDestination
PCHAR szPassword);
//加密文件例子
void jiami()
{
PCHAR szSource;
PCHAR szDestination;
PCHAR szPassword;
char response;
if(!(szSource=(char *)malloc(100)))
HandleError(“malloc 失败.“);
if(!(szDestination=(char *)malloc(100)))
HandleError(“malloc 失败.“);
if(!(szPassword=(char *)malloc(100)))
HandleError(“malloc 失败.“);
printf(“文件加密. /n/n“);
printf(“请输入待加密的文件: “);
scanf(“%s“szSource);
printf(“请输入保存密文的文件: “);
scanf(“%s“szDestination);
printf(“使用口令加密文件吗? ( y/n ) “);
getchar();
scanf(“%c“&response);
if(response == ‘y‘)
{
printf(“请输入口令:“);
scanf(“%s“szPassword);
}
else
{
printf(“不使用口令,则使用随机数作为密钥。 /n“);
free(szPassword);
szPassword = NULL;
}
//--------------------------------------------------------------------
// 调用EncryptFile函数完成加密。
if(CryEncryptFile(szSource szDestination szPassword))
{
printf(“加密文件%s 成功. /n“ szSource);
printf(“密文文件为 %s./n“szDestination);
}
else
{
HandleError(“加密文件失败!“);
}
}
//解密文件例子
void jiemi()
{
PCHAR szSource;
PCHAR szDestination;
PCHAR szPassword;
char response;
if(!(szSource=(char *)malloc(100)))
HandleError(“malloc 失败.“);
if(!(szDestination=(char *)malloc(100)))
HandleError(“malloc 失败.“);
if(!(szPassword=(char *)malloc(100)))
HandleError(“malloc 失败.“);
printf(“文件解密. /n/n“);
printf(“输入待解密的文件名: “);
scanf(“%s“szSource);
printf(“输入明文保存文件名: “);
scanf(“%s“szDestination);
printf(“是否使用口令加密的文件? ( y/n ) “);
getchar();
scanf(“%c“&response);
if(response == ‘y‘)
{
printf(“输入口令:“);
scanf(“%s“szPassword);
}
else
{
printf(“没有使用口令加密,加密密钥以密文的形式保存在文件中。/n“);
free(szPassword);
szPassword = NULL;
}
if(!CryDecryptFile(szSource szDestination szPassword))
{
printf(“/n解密文件失败. /n“);
}
else
{
printf(“/n解密文件%s 成功 /n“ szSource);
printf(“解密后的文件保存为 %s ./n“szDestination);
}
}
/************************************************************************
函数功能:加密文件
参数:
szSource:[IN],待加密的明文文件路径
szDestination:[IN] 加密后的密文文件路径
szPassword:[IN] 口令
************************************************************************/
static BOOL CryEncryptFile(
PCHAR szSource
PCHAR szDestination
PCHAR szPassword)
{
//变量声明
FILE *hSource; //待加密的明文文件句柄
FILE *hDestination; //密文文件句柄
HCRYPTPROV hCryptProv; //CSP句柄
HCRYPTKEY hKey; //密钥句柄
HCRYPTKEY hXch
- 上一篇:avilib库源C代码
- 下一篇:C++面向对象程序设计 课后答案 铁道出版社
评论
共有 条评论