亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? eps1000nd_md5_tea.c

?? MD5算法在keil上實(shí)現(xiàn)。 其中設(shè)計(jì)到一些flash讀寫函數(shù)需要自己補(bǔ)充 上傳上去只是給大家參考一下。
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
					(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
					(a) = ROTATE_LEFT ((a), (s)); \

					(a) += (b); \
				}
				#define GG(a, b, c, d, x, s, ac) { \
					(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
					(a) = ROTATE_LEFT ((a), (s)); \
					(a) += (b); \
				}
不難發(fā)現(xiàn) FF,GG,HH,II除了調(diào)用F,G,H,I算法的不同外,其他的運(yùn)算步驟一摸一樣,	總結(jié)一下可以使用一個(gè)4*16的循環(huán)來(lái)完成MD5算法,
4代表FF,GG,HH,II四種算法,使用一個(gè)指針函數(shù)數(shù)組來(lái)完成F,G,H,I子程序的跳轉(zhuǎn),
16代表每一種算法下面的16個(gè)子運(yùn)算.
再分析FGHI函數(shù),均是對(duì)b,c,d進(jìn)行操作,所以通過上述數(shù)組序列循環(huán)后,FGHI則會(huì)對(duì)數(shù)組中固定位置的數(shù)據(jù)進(jìn)行運(yùn)算,簡(jiǎn)化了運(yùn)算步驟                                                                             
;***********************************************************************************************
;****創(chuàng) 建 人:                                                                                 
;****創(chuàng)建日期:                                                                                 
;***********************************************************************************************
;****修 改 人:                                                                                 
;****修改日期:                                                                                 
;***********************************************************************************************/
// 設(shè)定一個(gè)函數(shù)指針數(shù)據(jù),便于識(shí)別4個(gè)輪回的功能操作
code void (*MD5Func[])(void)={MD5F,MD5G,MD5H,MD5I};

void MD5Transform()
{
	uint8 i,j;
	//EA = 0;
	PdataCopy(md5OldState,md5State,16);		// 復(fù)制md5State 使用md5Temp參與MD5運(yùn)算,運(yùn)算結(jié)束后,新的state + 舊的state,得到最終MD5運(yùn)算結(jié)果	
	for(i=0;i<4;i++)
	{
		for(j=0;j<16;j++)
		{
			//1.執(zhí)行對(duì)應(yīng)的FGHI運(yùn)算 	 結(jié)果保存在MD5_R中
			MD5Func[i](); 
			//2.(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); 
			//	(a) = ROTATE_LEFT ((a), (s)); 
			//	(a) += (b); 
		   	PD32Add_LE(md5AA,md5TEMP);
			PD32Add_LE(md5AA,md5Buf + MD5_XI[i][j]);
			Code2Pdata(md5TEMP,(uint16)(MD5_TI[i] + (j << 2)),4);
			PD32Add_LE(md5AA,md5TEMP);
			PD32Rlc_LE(md5AA,MD5_SI[i][j % 4],1);
			PD32Add_LE(md5AA,md5BB);
			//3.移動(dòng)md5OldState中數(shù)據(jù) 使abcd->dabc->cdab->bcda->abcd...
			// PdataCopy 本身使用了從后向前復(fù)制的方法 所以在oldState的移動(dòng)中使用兩次內(nèi)存拷貝就能實(shí)現(xiàn)功能
		   	PdataCopy(md5BB,md5AA,16);	//從A開始 復(fù)制到 B中 運(yùn)算后md5TEMP中保存了MD5D
			PdataCopy(md5AA,md5TEMP,4);	// 把D恢復(fù)到A中
		}
	}
	for(i=0;i<16;i+=4) 					// state += oldState
	{
		PD32Add_LE(md5State + i,md5OldState + i);

	}
	//EA =1;
}
/***********************************************************************************************
;****函數(shù)名稱:MD5Prefill                                                                               
;****入口參數(shù):md5In  len                                                                               
;****出口參數(shù):                                                                                 
;****全局變量:                                                                                 
;****調(diào)用模塊:                                                                                 
;****說(shuō)    明: 從md5In中提取len個(gè)數(shù)據(jù)填充到md5Buf中,
			   根據(jù)EPS1000ND-8K的特殊性,輸入txt長(zhǎng)度不超過55,key長(zhǎng)度為16 
			   所以此處不做長(zhǎng)度判斷,每次填充均從md5Buf的第1位開始
			   填充完畢后,立即進(jìn)行md5Transform運(yùn)算                                                                           
;***********************************************************************************************
;****創(chuàng) 建 人:                                                                                 
;****創(chuàng)建日期:                                                                                 
;***********************************************************************************************
;****修 改 人:                                                                                 
;****修改日期:                                                                                 
;***********************************************************************************************/
void MD5Prefill(uint8 pdata *md5In,uint8 len)
{
	// 1.拷貝md5In 到 md5Buf
	PdataCopy(md5Buf,md5In,len);		// 復(fù)制md5In 到 md5Buf
	// 2.md5Buf中剩余數(shù)據(jù) 填充PADING和oldCount
	PdataFill(md5Buf + len ,0,64 - len);
	*(uint8 pdata *)(md5Buf + len) = 0x80;	// 填充padding
	// 填充MD5數(shù)據(jù)長(zhǎng)度
	*(uint8 pdata *)(md5Buf + 56) = (uint8)(len << 3);
	*(uint8 pdata *)(md5Buf + 57) = (len >> 5) + 0x02; 
}

/***********************************************************************************************
;****函數(shù)名稱:MD5HMAC                                                                               
;****入口參數(shù):                                                                                 
;****出口參數(shù):                                                                                 
;****全局變量:                                                                                 
;****調(diào)用模塊:                                                                                 
;****說(shuō)    明:                                                                              
;***********************************************************************************************
;****創(chuàng) 建 人:                                                                                 
;****創(chuàng)建日期:                                                                                 
;***********************************************************************************************
;****修 改 人:                                                                                 
;****修改日期:                                                                                 
;***********************************************************************************************/
uint8 MD5HMAC()
{
	//uint8 i;
	// 1.判斷是否已經(jīng)打開文件
	if(fileOpenInf->address == 0)
	{
		// 打開文件地址 空
		return ERROR_NOTOPEN;
	}
	
	// 2.判斷是否具有權(quán)限
	if(EPSCheckAuthority((fileOpenInf->authority >> OFFSET_ENCRYPT) & 0x03))
	{
		return ERROR_NOTAUTHORITY;
	}
	// 3.讀取第一個(gè)key文件 并進(jìn)行第一次MD5運(yùn)算
	MD5Prefill(usbInBuf.bDat,usbInBuf.bDat[63]); 
	Code2Pdata(md5State,fileOpenInf->address,16);
	//Code2Pdata(md5State,0x1a08,16);	
	// 4.進(jìn)行第一次MD5運(yùn)算
	MD5Transform(); 
	// 5.打開第二個(gè)KEY文件
	// 定位usbInBuf中指定的文件
	if(FILELocateID() != FILE_LOCATE_OK)
	{
		return ERROR_INDEX;							// 如果文件打開錯(cuò)誤,返回
	}
	// 6.判斷是否具有權(quán)限
	if(EPSCheckAuthority((fileOpenInf->authority >> OFFSET_ENCRYPT) & 0x03))
	{
		return ERROR_NOTAUTHORITY;
	}
	
	// 7.讀取第二個(gè)key文件
	MD5Prefill(md5State,16);
	Code2Pdata(md5State,filePtr + 8,16);
	MD5Transform();
	PdataCopy(usbOutBuf.bDat,md5State,16);
   	return RIGHT_TOKEN;
}


/***********************************************************************************************
;****函數(shù)名稱:                                                                               
;****入口參數(shù):                                                                                 
;****出口參數(shù):                                                                                 
;****全局變量:                                                                                 
;****調(diào)用模塊:                                                                                 
;****說(shuō)    明:                                                                              
;***********************************************************************************************
;****創(chuàng) 建 人:                                                                                 
;****創(chuàng)建日期:                                                                                 
;***********************************************************************************************
;****修 改 人:                                                                                 
;****修改日期:                                                                                 
;***********************************************************************************************/

uint8 TEAEnde()
{
	
	// 1.判斷是否已經(jīng)打開文件
	if((fileOpenInf->address == 0) || (fileOpenInf->type != TEA_TYPE))
	{
		// 打開文件地址 空
		return ERROR_NOTOPEN;
	}
	
	// 2.判斷是否具有權(quán)限
	if(EPSCheckAuthority((fileOpenInf->authority >> OFFSET_ENCRYPT) & 0x03))
	{
		return ERROR_NOTAUTHORITY;
	}
	
	// 3.初始化key數(shù)據(jù)
	PdataCopy(teaBuf,usbInBuf.bDat,8);				// 復(fù)制teaY teaZ
	Code2Pdata(teaSum,(uint16)TEA_CONST,8);			// 讀取teaSum teaDelta
	Code2Pdata(teaKey,fileOpenInf->address,16);		// 讀取tea文件
	// 4.判斷加密、解密
	if(usbInBuf.bCommand[1] == 1)
	{
		PdataFill(teaSum,0,4);
		TEAEncryption();
	}
	else if(usbInBuf.bCommand[1] == 2)
	{
		TEADecryption();
	}
	else
	{
		return ERROR_INDEX;
	}

	return RIGHT_TOKEN;
}
// teaTemp2 = (pIn << 4) + (teaKey[k1] ^ b) + (teaSum ^ (pIn >> 5)) + teaKey[k2];
void TEAProc(uint8 pdata *pIn,uint8 k1,uint8 k2)
{
	PdataFill(teaTemp2,0,4);
	
	PdataCopy(teaTemp1,pIn,4);					// temp1 = pIn
	PD32Rlc_LE(teaTemp1,4,0);					// teaTemp1 <<= 4
	PD32Add_LE(teaTemp2,teaTemp1);				// teaTemp2 += pIn << 4
	
	PdataCopy(teaTemp1,teaKey + k1,4);			// 復(fù)制teaKey
	//PD32Xrl_LE(teaTemp1,pIn);					// teaTemp1 ^= pIn
	*(uint8 *)(teaTemp1 + 0) ^= *(uint8 *)(pIn + 0);
	*(uint8 *)(teaTemp1 + 1) ^= *(uint8 *)(pIn + 1);
	*(uint8 *)(teaTemp1 + 2) ^= *(uint8 *)(pIn + 2);
	*(uint8 *)(teaTemp1 + 3) ^= *(uint8 *)(pIn + 3);
	PD32Add_LE(teaTemp2,teaTemp1);				// teaTemp2 += (teaKey[k1]) ^ pIn

	PdataCopy(teaTemp1,pIn,4);					// temp1 = pIn
	PD32Rrc_LE(teaTemp1,5,0);					// teaTemp1 >>= 5
	//PD32Xrl_LE(teaTemp1,teaSum);				// teaTemp ^= teaSum
	*(uint8 *)(teaTemp1 + 0) ^= *(uint8 *)(teaSum + 0);
	*(uint8 *)(teaTemp1 + 1) ^= *(uint8 *)(teaSum + 1);
	*(uint8 *)(teaTemp1 + 2) ^= *(uint8 *)(teaSum + 2);
	*(uint8 *)(teaTemp1 + 3) ^= *(uint8 *)(teaSum + 3);
	PD32Add_LE(teaTemp2,teaTemp1);				// teaTemp2 += (teaSum ^(b >> 5)

	PD32Add_LE(teaTemp2,teaKey + k2);			// a += teaKey[k2]
}
/***********************************************************************************************
;****函數(shù)名稱:TEAEncription                                                                               
;****入口參數(shù):                                                                                 
;****出口參數(shù):                                                                                 
;****全局變量:                                                                                 
;****調(diào)用模塊:                                                                                 
;****說(shuō)    明: TEA加密                                                                             
;***********************************************************************************************
;****創(chuàng) 建 人:                                                                                 
;****創(chuàng)建日期:                                                                                 
;***********************************************************************************************
;****修 改 人:                                                                                 
;****修改日期:                                                                                 
;***********************************************************************************************/

void TEAEncryption()
{
	uint8 i;
	PdataFill(teaSum,0,4);
	for(i=0;i<TEA_ROUNDS;i++)
	{
		//sum += delta
		PD32Add_LE(teaSum,teaDelta);
		//teaTemp2 = (z << 4) + (k[0] ^ z) + (sum ^ (z >> 5)) + k[4];
		TEAProc(teaZ,0,4);
		// y+= teaTemp2;
		PD32Add_LE(teaY,teaTemp2);
		//teaTemp2 = (y << 4) + (k[8] ^ y) + (sum ^ (y >> 5)) + k[12];
		TEAProc(teaY,8,12);
		PD32Add_LE(teaZ,teaTemp2); 			
	}
	PdataCopy(usbOutBuf.bDat,teaY,8);	// 復(fù)制運(yùn)算結(jié)果
}

/***********************************************************************************************
;****函數(shù)名稱:TEADecription                                                                               
;****入口參數(shù):                                                                                 
;****出口參數(shù):                                                                                 
;****全局變量:                                                                                 
;****調(diào)用模塊:                                                                                 
;****說(shuō)    明: TEA解密                                                                             
;***********************************************************************************************
;****創(chuàng) 建 人:                                                                                 
;****創(chuàng)建日期:                                                                                 
;***********************************************************************************************
;****修 改 人:                                                                                 
;****修改日期:                                                                                 
;***********************************************************************************************/

void TEADecryption()
{
 	uint8 i;
	for(i=0;i<TEA_ROUNDS;i++)
	{
	 	TEAProc(teaY,8,12);
		PD32Sub_LE(teaZ,teaTemp2);
		TEAProc(teaZ,0,4);		    
		PD32Sub_LE(teaY,teaTemp2);
		PD32Sub_LE(teaSum,teaDelta);
	}
   	PdataCopy(usbOutBuf.bDat,teaY,8);	// 復(fù)制運(yùn)算結(jié)果
}
		

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美久久久久无广告| 国产精品一卡二卡在线观看| 成人污污视频在线观看| 精品蜜桃在线看| 久久草av在线| 久久久久久影视| 国产电影一区二区三区| 国产日韩欧美a| 99v久久综合狠狠综合久久| ●精品国产综合乱码久久久久| 中文字幕高清一区| 99视频热这里只有精品免费| 亚洲视频一区二区在线观看| 欧美视频一区二区三区在线观看 | 国产精品中文有码| 国产日韩精品一区| 色婷婷综合中文久久一本| 亚洲一区二区三区激情| 欧美精品免费视频| 午夜精品视频一区| 日韩欧美电影一区| 粉嫩av一区二区三区在线播放| 精品国产a毛片| 成人黄色av网站在线| 一区二区三区四区蜜桃| 欧美一区午夜视频在线观看| 国产福利精品一区| 亚洲欧美激情在线| 日韩免费视频一区| 日本一区二区三区久久久久久久久不| 国产高清不卡一区| 一区二区三区丝袜| 欧美在线短视频| 精品在线播放免费| 欧美韩日一区二区三区| 蜜臀av性久久久久蜜臀av麻豆 | 日韩免费在线观看| 99久久99久久精品免费看蜜桃 | 91麻豆精品久久久久蜜臀| 国产一区二区三区精品欧美日韩一区二区三区 | 日本特黄久久久高潮| 精品国产露脸精彩对白| 91视频.com| 久久国产精品99久久人人澡| 久久久久久久久97黄色工厂| 91免费观看视频在线| 一区二区欧美视频| 亚洲理论在线观看| 日韩视频一区在线观看| av不卡在线观看| 蜜桃一区二区三区在线观看| 亚洲另类一区二区| 国产亚洲欧洲997久久综合 | 国内精品免费在线观看| 久久噜噜亚洲综合| 欧美日韩国产综合一区二区| 99精品一区二区| 国产精品18久久久久久vr| 日韩精品午夜视频| 亚洲最色的网站| 国产精品看片你懂得| 2020国产精品自拍| 日韩精品一区二区在线观看| 欧美日韩免费高清一区色橹橹| 日韩一区二区免费在线观看| 国产成人在线影院| 美女视频网站黄色亚洲| 日韩中文字幕亚洲一区二区va在线 | 精品中文字幕一区二区| 日韩精品色哟哟| 日韩国产欧美在线视频| 亚洲一区二区欧美激情| 亚洲人成网站色在线观看| 欧美国产97人人爽人人喊| 精品欧美乱码久久久久久| 欧美一激情一区二区三区| 欧美日韩专区在线| 欧美性一二三区| 91久久久免费一区二区| www.在线成人| 欧美精品日韩精品| 日本视频一区二区| 午夜电影网一区| 亚洲6080在线| 日本免费新一区视频| 五月天一区二区三区| 亚洲三级在线播放| 亚洲美女视频一区| 亚洲美女少妇撒尿| 偷拍亚洲欧洲综合| 另类小说欧美激情| 极品美女销魂一区二区三区免费| 久久99国产精品久久99 | 国产91丝袜在线18| 国产aⅴ精品一区二区三区色成熟| 国产99精品视频| www.在线成人| a4yy欧美一区二区三区| 色狠狠桃花综合| 欧美福利电影网| 久久久精品天堂| 1024成人网| 亚洲国产你懂的| 日韩avvvv在线播放| 精品综合久久久久久8888| 久久aⅴ国产欧美74aaa| 国产成人啪免费观看软件| 国产成人丝袜美腿| 色伊人久久综合中文字幕| 日本电影欧美片| 欧美一区二区三区爱爱| 日韩免费一区二区| 91伊人久久大香线蕉| 欧美日韩情趣电影| 精品播放一区二区| 亚洲欧美在线观看| 午夜视频在线观看一区二区三区| 九九久久精品视频| 不卡免费追剧大全电视剧网站| 色乱码一区二区三区88| 欧美一卡二卡在线| 国产精品每日更新| 亚洲国产日韩在线一区模特| 国内偷窥港台综合视频在线播放| 91偷拍与自偷拍精品| 91网站在线观看视频| 日韩一级在线观看| 亚洲国产成人在线| 午夜不卡av免费| 国产美女在线精品| 欧美日韩专区在线| 中文字幕一区在线观看| 日韩电影免费在线观看网站| 国产999精品久久久久久绿帽| 欧美日韩国产乱码电影| 国产精品日韩精品欧美在线| 久久精品国产久精国产爱| 欧美日韩成人一区二区| 国产91综合网| 日韩一区二区三区视频| 一区二区在线观看免费视频播放| 国产精品亚洲午夜一区二区三区 | 日韩国产欧美在线视频| 亚洲最大成人综合| 国产成人精品影视| 欧美va亚洲va在线观看蝴蝶网| 一区二区三区不卡在线观看 | 一区二区三区中文在线| 九九在线精品视频| 日韩一区二区三区免费观看| 一区二区三区在线观看网站| 成人福利电影精品一区二区在线观看 | 亚洲高清久久久| 91免费视频观看| 国产精品免费视频一区| 国产一区二区导航在线播放| 91精品久久久久久久99蜜桃| 亚洲国产视频一区| 色综合久久中文字幕| 国产精品丝袜黑色高跟| 国产99精品国产| 欧美国产日韩精品免费观看| 国产在线一区二区综合免费视频| 日韩一级片网站| 蜜臀久久99精品久久久久久9| 欧美三区在线观看| 一区二区三区中文字幕电影 | 欧美日韩成人在线| 亚洲超碰97人人做人人爱| 欧美日韩中文字幕一区| 亚洲一卡二卡三卡四卡| 在线免费亚洲电影| 亚洲综合在线观看视频| 91麻豆swag| 欧美人与性动xxxx| 奇米精品一区二区三区在线观看一 | 亚洲猫色日本管| 日韩精品91亚洲二区在线观看| 51精品国自产在线| 免费观看在线色综合| 日韩美女一区二区三区四区| 久久99国产精品久久99| 久久久蜜桃精品| 97se亚洲国产综合自在线不卡| 亚洲人成小说网站色在线| 色哦色哦哦色天天综合| 亚洲国产日日夜夜| 88在线观看91蜜桃国自产| 成人激情免费电影网址| 国产婷婷色一区二区三区四区| 成人av在线资源网站| 亚洲人精品午夜| 制服丝袜亚洲色图| 激情五月播播久久久精品| 欧美激情一区二区三区四区| 91丨porny丨户外露出| 日欧美一区二区| 久久久久9999亚洲精品| 色婷婷狠狠综合| 久久99精品国产.久久久久|