• 大小: 3.28MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-14
  • 语言: C/C++
  • 标签:

资源简介

/* *由于多方尝试并编写Openssl对文件的加解密方法,均以失败告终,所以我们小组绝对采用新的加密算法,即Windows CrytoAPI,由微软公司提出的一种安全 *加密应用服务框架 *CryptoAPI数据加解密,它的流程为: *(加密模块)1.创建会话密钥 2.加密数据 3.安全保存或交换会话密钥 *(解密模块)1.获取会话密钥 2.解密数据 *它的加密是基于对称加密算法的(对称算法加密解密速度快),对文件的读取都要用的c语言的方法,c++的文件读取功能不好用啊 *经过测试,该算法可以对txt/doc进行加解密,其他我还没测试,你们可以试试其他文本类型看看 */

资源截图

代码片段和文件信息

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif 

#include 
#include 
#include 
#include 
#include 
#include 
#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
#define KEYLENGTH  0x00800000

#define ENCRYPT_ALGORITHM CALG_RC4 
#define ENCRYPT_BLOCK_SIZE 8 
#include 
#include “Dec.h“


/*
功能:解密密文szSource文件,解密后的数据存储到szDestination文件中
*/
BOOL Dec::DecryptFile(
     PCHAR szSource   //密文文件名
     PCHAR szDestination //解密后数据存储文件
     PCHAR szPassword)  //口令,即密码,其实口令和密码是两回事,了解一下就行了,作用一样

//--------------------------------------------------------------------
// 局部变量申明与初始化.

FILE *hSource; 
FILE *hDestination; 

HCRYPTPROV hCryptProv; 
HCRYPTKEY hKey; 

PBYTE pbBuffer; 
DWORD dwBlockLen; 
DWORD dwBufferLen; 
DWORD dwCount; 

BOOL status = FALSE; 
 
//--------------------------------------------------------------------
// 打开密文文件. 
if(!(hSource = fopen(szSource“rb“))) 
{
  cout<<“打开密文文件出错!“< }
//--------------------------------------------------------------------
// 打开目标文件,用于存储解密后的数据. 

if(!(hDestination = fopen(szDestination“wb“)))
{
cout<<“打开明文文件出错!“< }

//获取加密服务者句柄
hCryptProv = GetCryptProv();

//获取或创建会话密钥
if(!szPassword|| strcmp(szPassword““)==0 ) 

//--------------------------------------------------------------------
//从密文文件导入保存的会话密钥 

hKey = GenKeyFromFile( hCryptProvhSource);


else 

//--------------------------------------------------------------------
// 通过输入密码重新创建会话密钥. 
 
hKey=GenKeyByPassword( hCryptProv szPassword);

 

// 计算一次解密的数据长度,它是ENCRYPT_BLOCK_SIZE 的整数倍

dwBlockLen = 1000 - 1000 % ENCRYPT_BLOCK_SIZE; 
dwBufferLen = dwBlockLen; 

//--------------------------------------------------------------------
// 分配内存空间. 

if(!(pbBuffer = (BYTE *)malloc(dwBufferLen)))
{
  cout<<“所需内存不够!“< }
//--------------------------------------------------------------------
// 解密密文文件,解密后数据保存在目标文件 

do { 
//--------------------------------------------------------------------
// 每次从密文文件中读取dwBlockLen字节数据. 

dwCount = fread(
 pbBuffer 
 1 
 dwBlockLen 
 hSource); 
if(ferror(hSource))
{
cout<<“读取密文文件出错!“< }
//--------------------------------------------------------------------
// 解密 数据
if(!CryptDecrypt(
  hKey 
  0 
  feof(hSource) 
  0 
  pbBuffer 
  &dwCount))
{
  cout<<“解密数据时出错!“< }
//--------------------------------------------------------------------
// 把解密后的数据写入目标文件中. 

fwrite(
pbBuffer 

dwCount 
hDestination); 
if(ferror(hDestination))
{
   cout<<“把解密后的数据写入目标文件中时出错!“< }
}  while(!feof(hSource)); 

status = TRUE; 

//--------------------------------------------------------------------
// 关闭文件
if(hSource)
{
if(f

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1004054  2010-05-06 23:00  加解密文件\测试截图\解密图片.bmp

     文件     988090  2010-05-06 22:59  加解密文件\测试截图\加密图片.bmp

     文件        524  2010-05-06 19:42  加解密文件\DecAndEnc\DecAndEnc.dsw

     文件      82944  2010-10-09 00:06  加解密文件\DecAndEnc\DecAndEnc.ncb

     文件       1328  2010-05-06 22:56  加解密文件\DecAndEnc\DecAndEnc.plg

     文件        582  2010-05-06 20:23  加解密文件\DecAndEnc\Enc.h

     文件       1083  2010-05-06 21:19  加解密文件\DecAndEnc\get_mac.cpp

     文件       1860  2010-05-06 21:39  加解密文件\DecAndEnc\get_mac.h

     文件       4549  2010-05-06 22:20  加解密文件\DecAndEnc\DecAndEnc.dsp

     文件       7106  2010-05-06 22:34  加解密文件\DecAndEnc\Dec.cpp

     文件        718  2010-05-06 22:34  加解密文件\DecAndEnc\Dec.h

     文件       6747  2010-05-06 22:36  加解密文件\DecAndEnc\Enc.cpp

     文件          0  2010-05-06 22:55  加解密文件\DecAndEnc\e.txt

     文件       4125  2010-05-06 22:56  加解密文件\DecAndEnc\test.cpp

     文件     599040  2010-05-06 22:56  加解密文件\DecAndEnc\Debug\DecAndEnc.pdb

     文件     295936  2010-05-06 22:58  加解密文件\DecAndEnc\Debug\vc60.idb

     文件      94208  2010-05-06 22:56  加解密文件\DecAndEnc\Debug\vc60.pdb

     文件      12568  2010-05-06 21:19  加解密文件\DecAndEnc\Debug\get_mac.obj

     文件    1067298  2010-05-06 22:34  加解密文件\DecAndEnc\Debug\Dec.sbr

     文件    1067056  2010-05-06 22:36  加解密文件\DecAndEnc\Debug\Enc.sbr

     文件    1066843  2010-05-06 22:56  加解密文件\DecAndEnc\Debug\test.sbr

     文件    3220480  2010-05-06 21:43  加解密文件\DecAndEnc\Debug\DecAndEnc.bsc

     文件     229435  2010-05-06 22:56  加解密文件\DecAndEnc\Debug\DecAndEnc.exe

     文件      25927  2010-05-06 22:34  加解密文件\DecAndEnc\Debug\Dec.obj

     文件     309080  2010-05-06 22:56  加解密文件\DecAndEnc\Debug\DecAndEnc.ilk

     文件      24675  2010-05-06 22:36  加解密文件\DecAndEnc\Debug\Enc.obj

     文件    5035792  2010-05-06 22:36  加解密文件\DecAndEnc\Debug\DecAndEnc.pch

     文件      23206  2010-05-06 22:56  加解密文件\DecAndEnc\Debug\test.obj

     文件      68608  2010-10-09 00:06  加解密文件\DecAndEnc\DecAndEnc.opt

     目录          0  2010-05-06 23:01  加解密文件\DecAndEnc\Debug

............此处省略6个文件信息

评论

共有 条评论

相关资源