• 大小: 15KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C/C++
  • 标签: crytoapi  

资源简介

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

评论

共有 条评论

相关资源