资源简介
这个资料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
- 上一篇:mfc实现滑动窗口的简单模拟
- 下一篇:数字图像处理mfc
评论
共有 条评论