資源簡介
這個資料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
評論
共有 條評論