91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

大三的一門課程internet/網絡安全課程設計MD5算法實現的一個簡單的加密文件

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include
#include?
#include?
#define?MD5H
void?ROL(unsigned?int?&s?unsigned?short?cx);?//32位數循環左移實現函數
void?ltob(unsigned?int?&i);?//B\L互轉,接受UINT類型
unsigned?int*?MD5(const?char*?mStr);?//接口函數,并執行數據填充,計算MD5時調用此函數
inline?unsigned?int?F(unsigned?int?X?unsigned?int?Y?unsigned?int?Z)
{
return?(X?&?Y)?|?((~X)?&?Z);
}
inline?unsigned?int?G(unsigned?int?X?unsigned?int?Y?unsigned?int?Z)
{
return?(X?&?Z)?|?(Y?&?(~Z));
}
inline?unsigned?int?H(unsigned?int?X?unsigned?int?Y?unsigned?int?Z)
{
return?X?^?Y?^?Z;
}
inline?unsigned?int?I(unsigned?int?X?unsigned?int?Y?unsigned?int?Z)
{
return?Y?^?(X?|?(~Z));
}
/*4組計算函數結束*/

/*32位數循環左移實現函數*/
void?ROL(unsigned?int?&s?unsigned?short?cx)
{
if?(cx?>?32)cx?%=?32;
s?=?(s?<>?(32?-?cx));
return;
}

/*B\L互轉,接收UINT類型*/
void?ltob(unsigned?int?&i)
{
unsigned?int?tmp?=?i;//保存副本
byte?*psour?=?(byte*)&tmp?*pdes?=?(byte*)&i;
pdes?+=?3;//調整指針,準備左右調轉
for?(short?i?=?3;?i?>=?0;?--i)
{
CopyMemory(pdes?-?i?psour?+?i?1);
}
return;
}

/*
44?MD5循環計算函數,label=第幾輪循環(1<=label<=4),lGroup數組=4個種子副本,M=數據(16組32位數指針)
45?種子數組排列方式:?--A--D--C--B--,即?lGroup[0]=A;?lGroup[1]=D;?lGroup[2]=C;?lGroup[3]=B;
46?*/
void?AccLoop(unsigned?short?label?unsigned?int?*lGroup?void?*M)
{
unsigned?int?*i1?*i2?*i3?*i4?TAcc?tmpi?=?0;?//定義:4個指針;?T表累加器;?局部變量
typedef?unsigned?int(*clac)(unsigned?int?X?unsigned?int?Y?unsigned?int?Z);?//定義函數類型
const?unsigned?int?rolarray[4][4]?=?{
{?7?12?17?22?}
{?5?9?14?20?}
{?4?11?16?23?}
{?6?10?15?21?}
};//循環左移-位數表
const?unsigned?short?mN[4][16]?=?{
{?0?1?2?3?4?5?6?7?8?9?10?11?12?13?14?15?}
{?1?6?11?0?5?10?15?4?9?14?3?8?13?2?7?12?}
{?5?8?11?14?1?4?7?10?13?0?3?6?9?12?15?2?}
{?0?7?14?5?12?3?10?1?8?15?6?13?4?11?2?9?}
};//數據坐標表
const?unsigned?int?*pM?=?static_cast(M);//轉換類型為32位的Uint
TAcc?=?((label?-?1)?*?16)?+?1;?//根據第幾輪循環初始化T表累加器
clac?clacArr[4]?=?{?F?G?H?I?};?//定義并初始化計算函數指針數組

??/*一輪循環開始(16組->16次)*/
for?(short?i?=?0;?i? {
/*進行指針自變換*/
i1?=?lGroup?+?((0?+?i)?%?4);
i2?=?lGroup?+?((3?+?i)?%?4);
i3?=?lGroup?+?((2?+?i)?%?4);
i4?=?lGroup?+?((1?+?i)?%?4);

/*第一步計算開始:?A+F(BCD)+M[i]+T[i+1]?注:第一步中直接計算T表*/
tmpi?=?(*i1?+?clacArr[label?-?1](*i2?*i3?*i4)?+?pM[(mN[label?-?1][i])]?+?(unsigned?int)(0x100000000UL?*?abs(sin((double)(TAcc?+?i)))));
ROL(tmpi?rolarray[label?-?1][i?%?4]);//第二步:循環左移
*i1?=?*i2?+?tmpi;//第三步:相加并賦值到種子
}
return;
}
/*接口函數,并執行數據填充*/
unsigned?int*?MD5(const?char*?mStr)
{
unsigned?int?mLen?=?strlen(mStr);?//計算字符串長度
if?(mLen? unsigned?int?FillSize?=?448?-?((mLen?*?8)?%?512);?//計算需填充的bit數
unsigned?int?FSbyte?=?FillSize?/?8;?//以字節表示的填充數
unsigned?int?BuffLen?=?mLen?+?8?+?FSbyte;?//緩沖區長度或者說填充后的長度
unsigned?char?*md5Buff?=?new?unsigned?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-07-19?10:29??MD5\
?????目錄???????????0??2018-07-19?10:28??MD5\.vs\
?????目錄???????????0??2018-07-19?10:28??MD5\.vs\MD5\
?????目錄???????????0??2018-07-19?10:28??MD5\.vs\MD5\v14\
?????文件???????18432??2018-07-19?10:29??MD5\.vs\MD5\v14\.suo
?????目錄???????????0??2018-07-19?10:29??MD5\MD5\
?????文件????????5614??2018-07-19?10:29??MD5\MD5\MD5.cpp
?????文件????????5699??2018-07-19?10:29??MD5\MD5\MD5.vcxproj
?????文件?????????944??2018-07-19?10:29??MD5\MD5\MD5.vcxproj.filters
?????文件?????7991296??2018-07-19?10:29??MD5\MD5.VC.db
?????文件????????1291??2018-07-19?10:28??MD5\MD5.sln
?????文件??????????70??2019-06-10?11:06??說明.txt

評論

共有 條評論