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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? has160.c

?? has160哈希函數。用散列的方法將明文處理達到加密的效果。
?? C
字號:
/***************************************************************************
* Copyright (c) 2000-2004, Future Systems, Inc. / Seoul, Republic of Korea *
* All Rights Reserved.                                                     *
*                                                                          *
* This document contains proprietary and confidential information.  No     *
* parts of this document or the computer program it embodies may be in     *
* any way copied, duplicated, reproduced, translated into a different      *
* programming language, or distributed to any person, company, or          *
* corporation without the prior written consent of Future Systems, Inc.    *
*                              Hyo Sun Hwang                               *
*                372-2 YangJae B/D 6th Floor, Seoul, Korea                 *
*                           +82-2-578-0581 (552)                           *
***************************************************************************/

/*--------------------- [ Version/Command in detais] ---------------------*\
Description : seed.c
			(C-source file) Hash Algorithm HAS160

C0000 : Created by Hyo Sun Hwang (hyosun@future.co.kr) 2000/12/31

C0001 : Modified by Hyo Sun Hwang (hyosun@future.co.kr) 2000/00/00

\*------------------------------------------------------------------------*/

/*************** Header files *********************************************/
#include "has160.h"

/*************** Assertions ***********************************************/

/*************** Definitions / Macros  ************************************/

/*************** New Data Types *******************************************/

/*************** Global Variables *****************************************/

/*************** Prototypes ***********************************************/

/*************** Macros ***************************************************/
//	boolean functions
#define F(x, y, z)  ( (z)^( (x) & ((y)^(z)) ) )
#define G(x, y, z)  ( (x) ^ (y) ^ (z) )
#define H(x, y, z)  ( (y)^( (x) | ~(z) ) )

//	step operations
#define FF(a, b, c, d, e, x, s) {					\
	(e) += ROTL_DWORD(a, s) + F(b, c, d) + (x);		\
	(b) = ROTL_DWORD(b, 10);						\
}
#define GG(a, b, c, d, e, x, s) {					\
	(e) += ROTL_DWORD(a, s) + G(b, c, d) + (x) + K;	\
	(b) = ROTL_DWORD(b, 17);						\
}
#define HH(a, b, c, d, e, x, s) {					\
	(e) += ROTL_DWORD(a, s) + H(b, c, d) + (x) + K;	\
	(b) = ROTL_DWORD(b, 25);						\
}
#define II(a, b, c, d, e, x, s) {					\
	(e) += ROTL_DWORD(a, s) + G(b, c, d) + (x) + K;	\
	(b) = ROTL_DWORD(b, 30);						\
}

/*************** Function *************************************************
*	HAS160 core fuction
*/
static void HAS160_Transform(DWORD *Y, DWORD *DigestValue)
{
	DWORD	a, b, c, d, e, T[16], K;

#if defined(BIG_ENDIAN)
	DWORD	ZZ[16];

	ZZ[ 0] = ENDIAN_REVERSE_DWORD(Y[ 0]);
	ZZ[ 1] = ENDIAN_REVERSE_DWORD(Y[ 1]);
	ZZ[ 2] = ENDIAN_REVERSE_DWORD(Y[ 2]);
	ZZ[ 3] = ENDIAN_REVERSE_DWORD(Y[ 3]);
	ZZ[ 4] = ENDIAN_REVERSE_DWORD(Y[ 4]);
	ZZ[ 5] = ENDIAN_REVERSE_DWORD(Y[ 5]);
	ZZ[ 6] = ENDIAN_REVERSE_DWORD(Y[ 6]);
	ZZ[ 7] = ENDIAN_REVERSE_DWORD(Y[ 7]);
	ZZ[ 8] = ENDIAN_REVERSE_DWORD(Y[ 8]);
	ZZ[ 9] = ENDIAN_REVERSE_DWORD(Y[ 9]);
	ZZ[10] = ENDIAN_REVERSE_DWORD(Y[10]);
	ZZ[11] = ENDIAN_REVERSE_DWORD(Y[11]);
	ZZ[12] = ENDIAN_REVERSE_DWORD(Y[12]);
	ZZ[13] = ENDIAN_REVERSE_DWORD(Y[13]);
	ZZ[14] = ENDIAN_REVERSE_DWORD(Y[14]);
	ZZ[15] = ENDIAN_REVERSE_DWORD(Y[15]);
#else
	DWORD	*ZZ=Y;
#endif

	T[ 0] = ZZ[ 8] ^ ZZ[ 9] ^ ZZ[10] ^ ZZ[11];
	T[ 1] = ZZ[12] ^ ZZ[13] ^ ZZ[14] ^ ZZ[15];
	T[ 2] = ZZ[ 0] ^ ZZ[ 1] ^ ZZ[ 2] ^ ZZ[ 3];
	T[ 3] = ZZ[ 4] ^ ZZ[ 5] ^ ZZ[ 6] ^ ZZ[ 7];

	T[ 4] = ZZ[11] ^ ZZ[14] ^ ZZ[ 1] ^ ZZ[ 4];
	T[ 5] = ZZ[ 7] ^ ZZ[10] ^ ZZ[13] ^ ZZ[ 0];
	T[ 6] = ZZ[ 3] ^ ZZ[ 6] ^ ZZ[ 9] ^ ZZ[12];
	T[ 7] = ZZ[15] ^ ZZ[ 2] ^ ZZ[ 5] ^ ZZ[ 8];

	T[ 8] = ZZ[ 4] ^ ZZ[13] ^ ZZ[ 6] ^ ZZ[15];
	T[ 9] = ZZ[ 8] ^ ZZ[ 1] ^ ZZ[10] ^ ZZ[ 3];
	T[10] = ZZ[12] ^ ZZ[ 5] ^ ZZ[14] ^ ZZ[ 7];
	T[11] = ZZ[ 0] ^ ZZ[ 9] ^ ZZ[ 2] ^ ZZ[11];

	T[12] = ZZ[15] ^ ZZ[10] ^ ZZ[ 5] ^ ZZ[ 0];
	T[13] = ZZ[11] ^ ZZ[ 6] ^ ZZ[ 1] ^ ZZ[12];
	T[14] = ZZ[ 7] ^ ZZ[ 2] ^ ZZ[13] ^ ZZ[ 8];
	T[15] = ZZ[ 3] ^ ZZ[14] ^ ZZ[ 9] ^ ZZ[ 4];

	//
	a=DigestValue[0];
	b=DigestValue[1];
	c=DigestValue[2];
	d=DigestValue[3];
	e=DigestValue[4];

	//	round 1
	FF(a, b, c, d, e, T[ 0],  5);
	FF(e, a, b, c, d, ZZ[ 0], 11);
	FF(d, e, a, b, c, ZZ[ 1],  7);
	FF(c, d, e, a, b, ZZ[ 2], 15);
	FF(b, c, d, e, a, ZZ[ 3],  6);
	FF(a, b, c, d, e, T[ 1], 13);
	FF(e, a, b, c, d, ZZ[ 4],  8);
	FF(d, e, a, b, c, ZZ[ 5], 14);
	FF(c, d, e, a, b, ZZ[ 6],  7);
	FF(b, c, d, e, a, ZZ[ 7], 12);
	FF(a, b, c, d, e, T[ 2],  9);
	FF(e, a, b, c, d, ZZ[ 8], 11);
	FF(d, e, a, b, c, ZZ[ 9],  8);
	FF(c, d, e, a, b, ZZ[10], 15);
	FF(b, c, d, e, a, ZZ[11],  6);
	FF(a, b, c, d, e, T[ 3], 12);
	FF(e, a, b, c, d, ZZ[12],  9);
	FF(d, e, a, b, c, ZZ[13], 14);
	FF(c, d, e, a, b, ZZ[14],  5);
	FF(b, c, d, e, a, ZZ[15], 13);

	//	round 2
	K = 0x5A827999;
	GG(a, b, c, d, e, T[ 4],  5);
	GG(e, a, b, c, d, ZZ[ 3], 11);
	GG(d, e, a, b, c, ZZ[ 6],  7);
	GG(c, d, e, a, b, ZZ[ 9], 15);
	GG(b, c, d, e, a, ZZ[12],  6);
	GG(a, b, c, d, e, T[ 5], 13);
	GG(e, a, b, c, d, ZZ[15],  8);
	GG(d, e, a, b, c, ZZ[ 2], 14);
	GG(c, d, e, a, b, ZZ[ 5],  7);
	GG(b, c, d, e, a, ZZ[ 8], 12);
	GG(a, b, c, d, e, T[ 6],  9);
	GG(e, a, b, c, d, ZZ[11], 11);
	GG(d, e, a, b, c, ZZ[14],  8);
	GG(c, d, e, a, b, ZZ[ 1], 15);
	GG(b, c, d, e, a, ZZ[ 4],  6);
	GG(a, b, c, d, e, T[ 7], 12);
	GG(e, a, b, c, d, ZZ[ 7],  9);
	GG(d, e, a, b, c, ZZ[10], 14);
	GG(c, d, e, a, b, ZZ[13],  5);
	GG(b, c, d, e, a, ZZ[ 0], 13);

	//	round 3
	K = 0x6ED9EBA1;
	HH(a, b, c, d, e, T[ 8],  5);
	HH(e, a, b, c, d, ZZ[12], 11);
	HH(d, e, a, b, c, ZZ[ 5],  7);
	HH(c, d, e, a, b, ZZ[14], 15);
	HH(b, c, d, e, a, ZZ[ 7],  6);
	HH(a, b, c, d, e, T[ 9], 13);
	HH(e, a, b, c, d, ZZ[ 0],  8);
	HH(d, e, a, b, c, ZZ[ 9], 14);
	HH(c, d, e, a, b, ZZ[ 2],  7);
	HH(b, c, d, e, a, ZZ[11], 12);
	HH(a, b, c, d, e, T[10],  9);
	HH(e, a, b, c, d, ZZ[ 4], 11);
	HH(d, e, a, b, c, ZZ[13],  8);
	HH(c, d, e, a, b, ZZ[ 6], 15);
	HH(b, c, d, e, a, ZZ[15],  6);
	HH(a, b, c, d, e, T[11], 12);
	HH(e, a, b, c, d, ZZ[ 8],  9);
	HH(d, e, a, b, c, ZZ[ 1], 14);
	HH(c, d, e, a, b, ZZ[10],  5);
	HH(b, c, d, e, a, ZZ[ 3], 13);

	//	round 4
	K = 0x8F1BBCDC;
	II(a, b, c, d, e, T[12],  5);
	II(e, a, b, c, d, ZZ[ 7], 11);
	II(d, e, a, b, c, ZZ[ 2],  7);
	II(c, d, e, a, b, ZZ[13], 15);
	II(b, c, d, e, a, ZZ[ 8],  6);
	II(a, b, c, d, e, T[13], 13);
	II(e, a, b, c, d, ZZ[ 3],  8);
	II(d, e, a, b, c, ZZ[14], 14);
	II(c, d, e, a, b, ZZ[ 9],  7);
	II(b, c, d, e, a, ZZ[ 4], 12);
	II(a, b, c, d, e, T[14],  9);
	II(e, a, b, c, d, ZZ[15], 11);
	II(d, e, a, b, c, ZZ[10],  8);
	II(c, d, e, a, b, ZZ[ 5], 15);
	II(b, c, d, e, a, ZZ[ 0],  6);
	II(a, b, c, d, e, T[15], 12);
	II(e, a, b, c, d, ZZ[11],  9);
	II(d, e, a, b, c, ZZ[ 6], 14);
	II(c, d, e, a, b, ZZ[ 1],  5);
	II(b, c, d, e, a, ZZ[12], 13);

	//	chaining variables update
	DigestValue[0] += a;
	DigestValue[1] += b;
	DigestValue[2] += c;
	DigestValue[3] += d;
	DigestValue[4] += e;
}

/*************** Function *************************************************
*	
*/
void	HAS160_Init(
		HAS160_ALG_INFO	*AlgInfo)
{
	//
	AlgInfo->ChainVar[0] = 0x67452301;
	AlgInfo->ChainVar[1] = 0xefcdab89;
	AlgInfo->ChainVar[2] = 0x98badcfe;
	AlgInfo->ChainVar[3] = 0x10325476;
	AlgInfo->ChainVar[4] = 0xC3D2E1F0;

	//
	AlgInfo->Count[0] = AlgInfo->Count[1] = 0;
}

/*************** Function *************************************************
*	
*/
void	HAS160_Update(
		HAS160_ALG_INFO	*AlgInfo,
		BYTE			*Message,		//	input Message
		DWORD			MessageLen)		//	in BYTEs
{
	DWORD		RemainedLen, PartLen;

	//	Compute the number of hashed bytes mod HAS160_DIGEST_BLOCKLEN
	RemainedLen = (AlgInfo->Count[0] >> 3) % HAS160_DIGEST_BLOCKLEN;
	//	compute the number of bytes that can be filled up
	PartLen = HAS160_DIGEST_BLOCKLEN - RemainedLen;

	//	Update Count (number of toatl data bits)
	if( (AlgInfo->Count[0] += (MessageLen << 3)) < AlgInfo->Count[0] )
		AlgInfo->Count[1]++;
	AlgInfo->Count[1] += (MessageLen >> 29);

	//	琴繳 updtae 何盒
	if( MessageLen>=PartLen ) {
		memcpy(AlgInfo->Buffer+RemainedLen, Message, (int)PartLen);
		HAS160_Transform((DWORD *)AlgInfo->Buffer, AlgInfo->ChainVar);

		Message += PartLen;
		MessageLen -= PartLen;
		RemainedLen = 0;

		while( MessageLen>=HAS160_DIGEST_BLOCKLEN ) {
			if( (((int)Message)%4)==0 ) {	//	Speed up technique
				HAS160_Transform((DWORD *)Message, AlgInfo->ChainVar);
			}
			else {
				memcpy((BYTE *)AlgInfo->Buffer, Message, (int)HAS160_DIGEST_BLOCKLEN);
				HAS160_Transform((DWORD *)AlgInfo->Buffer, AlgInfo->ChainVar);
			}
			Message += HAS160_DIGEST_BLOCKLEN;
			MessageLen -= HAS160_DIGEST_BLOCKLEN;
		}
	}

	//	Buffer remaining input
	memcpy((BYTE *)AlgInfo->Buffer+RemainedLen, Message, (int)MessageLen);
}

/*************** Function *************************************************
*	
*/
void	HAS160_Final(
		HAS160_ALG_INFO	*AlgInfo,
		BYTE			*Digest)	//	output Hash Value
{
	DWORD		i, dwIndex, CountL, CountH;

	//	付瘤冠 喉廢 貿府
	CountL = AlgInfo->Count[0];
	CountH = AlgInfo->Count[1];
	dwIndex = (CountL >> 3) % HAS160_DIGEST_BLOCKLEN;
	AlgInfo->Buffer[dwIndex++] = 0x80;

	if(dwIndex>HAS160_DIGEST_BLOCKLEN-8) {
		memset((BYTE *)AlgInfo->Buffer + dwIndex, 0, (int)(HAS160_DIGEST_BLOCKLEN-dwIndex));

		HAS160_Transform((DWORD *)AlgInfo->Buffer, AlgInfo->ChainVar);

		memset((BYTE *)AlgInfo->Buffer, 0, (int)HAS160_DIGEST_BLOCKLEN-8);
	}
	else
		memset((BYTE *)AlgInfo->Buffer+dwIndex, 0, (int)(HAS160_DIGEST_BLOCKLEN-dwIndex-8));

	//	免仿
#if defined(BIG_ENDIAN)
	CountL = ENDIAN_REVERSE_DWORD(CountL);
	CountH = ENDIAN_REVERSE_DWORD(CountH);
#endif
	((DWORD *)AlgInfo->Buffer)[HAS160_DIGEST_BLOCKLEN/4-2] = CountL;
	((DWORD *)AlgInfo->Buffer)[HAS160_DIGEST_BLOCKLEN/4-1] = CountH;

	HAS160_Transform((DWORD *)AlgInfo->Buffer, AlgInfo->ChainVar);

	for( i=0; i<HAS160_DIGEST_VALUELEN; i+=4)
		LITTLE_D2B((AlgInfo->ChainVar)[i/4], &(Digest[i]));
}

/*************** END OF FILE **********************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美视频| 另类专区欧美蜜桃臀第一页| 日韩三级中文字幕| 在线免费观看成人短视频| 91亚洲永久精品| 91蝌蚪porny| 欧美主播一区二区三区| 在线观看视频一区| 56国语精品自产拍在线观看| 欧美狂野另类xxxxoooo| 在线成人午夜影院| 欧美一二三四区在线| 日韩欧美卡一卡二| 精品福利二区三区| 精品粉嫩超白一线天av| 国产亲近乱来精品视频| 亚洲视频在线观看一区| 亚洲精品午夜久久久| 午夜视频一区在线观看| 香蕉成人伊视频在线观看| 美女视频网站久久| 大胆欧美人体老妇| 欧美日韩一区二区三区不卡| 日韩一区二区在线观看视频| 久久精品视频在线免费观看| 中文字幕在线视频一区| 亚洲综合久久av| 久久不见久久见免费视频7| 风间由美中文字幕在线看视频国产欧美| 国产精品一卡二卡在线观看| jlzzjlzz国产精品久久| 欧美日韩不卡一区| 久久久精品国产免费观看同学| 中文字幕在线不卡一区 | 久久久久久久久久久久久夜| 中文字幕电影一区| 日韩精品亚洲专区| 国产福利一区在线观看| 欧美日韩亚洲综合| 欧美高清在线精品一区| 日韩电影在线看| av爱爱亚洲一区| 欧美成人一区二区三区在线观看 | 欧美国产日本韩| 亚洲一区二区黄色| 成人激情av网| 精品少妇一区二区三区视频免付费| 国产精品私人自拍| 精品一区二区三区视频| 欧美性猛交xxxxxx富婆| 国产精品久久久久精k8| 国产在线国偷精品产拍免费yy| 欧美影院一区二区三区| 亚洲欧美在线aaa| 国产一区二区在线电影| 欧美精三区欧美精三区| 亚洲男人的天堂在线观看| 国产91精品精华液一区二区三区| 欧美丰满美乳xxx高潮www| 亚洲免费视频中文字幕| 成人91在线观看| 国产精品毛片大码女人| 国产尤物一区二区| 精品福利在线导航| 视频一区视频二区中文字幕| 91福利视频网站| 亚洲免费伊人电影| 色综合久久天天| 麻豆91在线播放免费| 欧美精品久久久久久久多人混战| 亚洲精品国久久99热| 91美女片黄在线观看91美女| 国产精品嫩草影院av蜜臀| 大白屁股一区二区视频| 国产精品视频一区二区三区不卡| 狠狠色狠狠色合久久伊人| 欧美成人女星排行榜| 麻豆精品一区二区三区| 欧美一二三区在线| 国产在线精品一区二区夜色| 久久综合网色—综合色88| 极品瑜伽女神91| 国产视频一区不卡| 99久久亚洲一区二区三区青草| 国产精品高潮呻吟| 99精品久久99久久久久| 一区在线播放视频| 色综合久久久久久久| 亚洲妇女屁股眼交7| 欧美精品第1页| 久久超碰97中文字幕| 国产午夜精品福利| 色天天综合久久久久综合片| 亚洲图片有声小说| 欧美一区永久视频免费观看| 久久99最新地址| 国产精品伦一区| 欧美视频你懂的| 麻豆精品视频在线观看视频| 久久综合久久综合九色| 成人一区在线看| 一二三四社区欧美黄| 日韩一级二级三级| 成人av网站大全| 天堂蜜桃91精品| 国产亚洲欧美一级| 91在线视频在线| 免费在线一区观看| 国产精品网站导航| 91精品免费在线观看| 成人黄色电影在线| 天天av天天翘天天综合网| 久久精品人人做人人爽人人| 色菇凉天天综合网| 精品夜夜嗨av一区二区三区| 亚洲欧美视频在线观看视频| 欧美刺激脚交jootjob| 色又黄又爽网站www久久| 国产自产视频一区二区三区| 亚洲高清免费在线| 国产精品入口麻豆九色| 91精品国产入口| 99精品久久只有精品| 国产一区二区视频在线播放| 亚洲成人av电影在线| 最新国产成人在线观看| 日韩免费视频一区| 欧美日韩成人一区二区| 91视频在线看| 国产乱人伦精品一区二区在线观看 | 97成人超碰视| 狠狠狠色丁香婷婷综合久久五月| 亚洲国产一区二区三区青草影视| 中文字幕 久热精品 视频在线| 91精品国产综合久久精品图片 | 国内久久精品视频| 亚洲高清一区二区三区| 亚洲欧美激情小说另类| 国产精品毛片久久久久久久| 精品久久久久久久久久久院品网| 精品视频一区二区不卡| 91美女视频网站| 色婷婷久久一区二区三区麻豆| 成人18视频在线播放| 丁香婷婷综合五月| 成人永久免费视频| 成人在线综合网站| 国产91精品久久久久久久网曝门| 经典一区二区三区| 国产福利91精品一区二区三区| 国内外成人在线| 国内精品免费在线观看| 国产一区视频导航| 国产一区二区三区国产| 国产精品一区免费在线观看| 精品夜夜嗨av一区二区三区| 九一久久久久久| 国产精品1区2区3区在线观看| 精品一区二区三区欧美| 国产精品一区二区久久精品爱涩| 国产高清精品网站| 成人黄色电影在线| 在线一区二区三区四区五区| 欧美日韩一区二区三区不卡| 91精品国产乱码| 精品国产一区二区在线观看| 久久综合成人精品亚洲另类欧美| 国产人成亚洲第一网站在线播放| 中日韩免费视频中文字幕| 国产精品久久久久婷婷二区次| 亚洲色图在线看| 五月激情综合色| 精品在线亚洲视频| 不卡的电视剧免费网站有什么| 99热精品国产| 777久久久精品| 久久久久久黄色| 亚洲自拍偷拍网站| 久久狠狠亚洲综合| 99re视频这里只有精品| 6080国产精品一区二区| 国产日韩欧美综合一区| 一级精品视频在线观看宜春院 | 欧美日韩国产天堂| 日韩亚洲欧美一区| 欧美国产日本视频| 亚洲成人激情自拍| 成人激情免费视频| 欧美日韩高清影院| 中文字幕va一区二区三区| 亚洲国产精品尤物yw在线观看| 日本成人在线网站| 91丨九色porny丨蝌蚪| 日韩午夜三级在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲午夜成aⅴ人片| 国产成人免费网站| 日韩一级二级三级| 亚洲国产一二三| 国产白丝网站精品污在线入口|