• 大小: 18.92MB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2023-08-02
  • 语言: C/C++
  • 标签: 文件加密  

资源简介

这个资料5分资源,应该是很值的(除了程序外,还包含几篇论文资料)。 1、密钥均是自动产生,并且密钥被隐藏到图片中。其中涉 及到如何将一个图片隐藏到另一张图片。 2、图片上可以显示任意字符(中英文均可)进行签名。 3、采用VB做界面,VC++做的动态链接库。 4、使用AES(只支持128密钥),DES,和矩阵加密算法实现。 5、可以进行文件加密,也可以字符串加密并显示。。

资源截图

代码片段和文件信息

// DLL2.cpp : Defines the entry point for the DLL application.
//

#include “stdafx.h“
#define DLL2_EXPORTS
#include 
#include 
#include “DLL2.h“
#include “head.h“

char  epath[500];    // 图片背景,字模等的路径
char  efile[500];    // 加密/解密文件路径
char  type;    // 采用加密的类型:
   //   0:DES
   //   1:AES
   //   2: MDS

BOOL APIENTRY DllMain( HANDLE /*hModule*/ 
                       DWORD  ul_reason_for_call 
                       LPVOID /*lpReserved*/
                     )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}


/**
 *  将单个字符转化为16进制
 *
 **/
void tohex(unsigned char dataunsigned char *result )
{
static unsigned char p[16] = 
{
‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘
‘8‘‘9‘‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘
};
result[0] = p[ data >> 4  ];
result[1] = p[ data & 0x0f];
return ;
}

/**
 * 将二进制文件变换称16进制
 *
 **/
DLL2_API void __stdcall filetohex(char *file_in int length )
{
char filename[300];
char ch  result[3]={‘\0‘};
FILE *in*out;

for(int i = 0 ; i <= length ; i ++ )
{
filename[i] = file_in[i];
}
filename[i] = ‘\0‘;

in = fopen(filename“rb“);
out = fopen(“c:\\tmp““wb“);
assert(in != NULL );
assert(out != NULL );

result[2] = ‘\0‘;

while( fscanf(in“%c“&ch) == 1 )
{
tohex( (unsigned char)ch  (unsigned char *)result );
fprintf( out“%s“result);
}
fclose(in);
fclose(out);

in = fopen(“c:\\tmp““rb“);
out = fopen(filename“wb“);

while(fscanf(in“%c“&ch) == 1 )
{
fprintf(out“%c“ch);
}

fclose(in);
fclose(out);
remove(“c:\\tmp“);
return ;
}


/**
 *  将16进制文件,转换称二进制文件
 *  
 **/
DLL2_API void __stdcall filetochar(char *file_in int length )
{
char filename[300];
char ch ;
FILE *in*out;

for(int i = 0 ; i <= length ; i ++ )
{
filename[i] = file_in[i];
}
filename[i] = ‘\0‘;

in = fopen(filename“rb“);
out = fopen(“c:\\tmp““wb“);
assert(in != NULL );
assert(out != NULL );

while( fscanf(in“%2x“&ch) == 1 )
{
fprintf( out“%c“ch);
}
fclose(in);
fclose(out);

in = fopen(“c:\\tmp““rb“);
out = fopen(filename“wb“);

while(fscanf(in“%c“&ch) == 1 )
{
fprintf(out“%c“ch);
}

fclose(in);
fclose(out);
remove(“c:\\tmp“);
return ;
}

DLL2_API void __stdcall BeginEncrypt(char *file_in char *name  char *info_path  int file_in_lengthint name_length int info_path_length int flage  )
{
char ename[500];
for(int i =0 ; i <= file_in_length; i ++ )
{
efile[i] = file_in[i];
}
efile[i] = ‘\0‘;

for(i =0 ; i <= name_length; i ++ )
{
ename[i] = name[i];
}
ename[i] =‘\0‘;

for(i =0 ;i <= info_path_length ; i ++ )
{
epath[i] = info_path[i];
}
epath[i] =‘\0‘ ;


srand(time(0)); // 设定随机种子

type = flage ;
switch

评论

共有 条评论