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

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

?? sha.cpp

?? 實現了hash散列函數的功能并有驗證結果
?? CPP
字號:
// sha.cpp - modified by Wei Dai from Peter Gutmann's code
// Copyright 1992 by Peter Gutmann <pgut01@cs.auckland.ac.nz>.  Distributed with permission.

#include "pch.h"
#include "sha.h"

NAMESPACE_BEGIN(CryptoPP)

SHA::SHA()
	: IteratedHash<word32>(DATASIZE, DIGESTSIZE)
{
	Init();
}

void SHA::Init()
{
	countLo = countHi = 0;

	digest[0] = 0x67452301L;
	digest[1] = 0xEFCDAB89L;
	digest[2] = 0x98BADCFEL;
	digest[3] = 0x10325476L;
	digest[4] = 0xC3D2E1F0L;
}

void SHA::HashBlock(const word32 *input)
{
#ifndef IS_LITTLE_ENDIAN
	Transform(digest, input);
#else
	byteReverse(data.ptr, input, (unsigned int)DATASIZE);
	Transform(digest, data);
#endif
}

void SHA::Final(byte *hash)
{
	PadLastBlock(56);
	CorrectEndianess(data, data, 56);

	data[14] = countHi;
	data[15] = countLo;

	Transform(digest, data);
	CorrectEndianess(digest, digest, DIGESTSIZE);
	memcpy(hash, digest, DIGESTSIZE);

	Init();		// reinit for next use
}


/* The SHA f()-functions.  The f1 and f3 functions can be optimized to
   save one bool operation each - thanks to Rich Schroeppel,
   rcs@cs.arizona.edu for discovering this */

/*#define f1(x,y,z) ( ( x & y ) | ( ~x & z ) )          // Rounds  0-19 */
#define f1(x,y,z)   ( z ^ ( x & ( y ^ z ) ) )           /* Rounds  0-19 */
#define f2(x,y,z)   ( x ^ y ^ z )                       /* Rounds 20-39 */
/*#define f3(x,y,z) ( ( x & y ) | ( x & z ) | ( y & z ) )   // Rounds 40-59 */
#define f3(x,y,z)   ( ( x & y ) | ( z & ( x | y ) ) )   /* Rounds 40-59 */
#define f4(x,y,z)   ( x ^ y ^ z )                       /* Rounds 60-79 */

/* The SHA Mysterious Constants */

#define K1  0x5A827999L                                 /* Rounds  0-19 */
#define K2  0x6ED9EBA1L                                 /* Rounds 20-39 */
#define K3  0x8F1BBCDCL                                 /* Rounds 40-59 */
#define K4  0xCA62C1D6L                                 /* Rounds 60-79 */

/* Note that it may be necessary to add parentheses to these macros if they
   are to be called with expressions as arguments */

/* The initial expanding function.  The hash function is defined over an
   80-word expanded input array W, where the first 16 are copies of the input
   data, and the remaining 64 are defined by

		W[ i ] = W[ i - 16 ] ^ W[ i - 14 ] ^ W[ i - 8 ] ^ W[ i - 3 ]

   This implementation generates these values on the fly in a circular
   buffer - thanks to Colin Plumb, colin@nyx10.cs.du.edu for this
   optimization.

   The updated SHA-1 changes the expanding function by adding a rotate of 1
   bit. */

  #define expand(W,i) ( W[ i & 15 ] = rotl( (W[i&15] ^ W[i-14&15] ^ \
											 W[i-8&15] ^ W[i-3&15]), 1U) )

/* The prototype SHA sub-round.  The fundamental sub-round is:

		a' = e + ROTL( 5, a ) + f( b, c, d ) + k + data;
		b' = a;
		c' = ROTL( 30, b );
		d' = c;
		e' = d;

   but this is implemented by unrolling the loop 5 times and renaming the
   variables ( e, a, b, c, d ) = ( a', b', c', d', e' ) each iteration.
   This code is then replicated 20 times for each of the 4 functions, using
   the next 20 values from the W[] array each time */

#define subRound(a, b, c, d, e, f, k, data) \
	( e += rotl(a,5U) + f(b,c,d) + k + data, b = rotl(b,30U))

/* Perform the SHA transformation.  Note that this code, like MD5, seems to
   break some optimizing compilers due to the complexity of the expressions
   and the size of the basic block.  It may be necessary to split it into
   sections, e.g. based on the four subrounds */

void SHA::Transform( word32 *digest, const word32 *data )
{
	word32 eData[16];
	memcpy( eData, data, DATASIZE );

	register word32 A, B, C, D, E;
	A = digest[0];
	B = digest[1];
	C = digest[2];
	D = digest[3];
	E = digest[4];

	// Heavy mangling, in 4 sub-rounds of 20 interations each.
	subRound( A, B, C, D, E, f1, K1, eData[  0 ] );
	subRound( E, A, B, C, D, f1, K1, eData[  1 ] );
	subRound( D, E, A, B, C, f1, K1, eData[  2 ] );
	subRound( C, D, E, A, B, f1, K1, eData[  3 ] );
	subRound( B, C, D, E, A, f1, K1, eData[  4 ] );
	subRound( A, B, C, D, E, f1, K1, eData[  5 ] );
	subRound( E, A, B, C, D, f1, K1, eData[  6 ] );
	subRound( D, E, A, B, C, f1, K1, eData[  7 ] );
	subRound( C, D, E, A, B, f1, K1, eData[  8 ] );
	subRound( B, C, D, E, A, f1, K1, eData[  9 ] );
	subRound( A, B, C, D, E, f1, K1, eData[ 10 ] );
	subRound( E, A, B, C, D, f1, K1, eData[ 11 ] );
	subRound( D, E, A, B, C, f1, K1, eData[ 12 ] );
	subRound( C, D, E, A, B, f1, K1, eData[ 13 ] );
	subRound( B, C, D, E, A, f1, K1, eData[ 14 ] );
	subRound( A, B, C, D, E, f1, K1, eData[ 15 ] );
	subRound( E, A, B, C, D, f1, K1, expand( eData, 16 ) );
	subRound( D, E, A, B, C, f1, K1, expand( eData, 17 ) );
	subRound( C, D, E, A, B, f1, K1, expand( eData, 18 ) );
	subRound( B, C, D, E, A, f1, K1, expand( eData, 19 ) );

	subRound( A, B, C, D, E, f2, K2, expand( eData, 20 ) );
	subRound( E, A, B, C, D, f2, K2, expand( eData, 21 ) );
	subRound( D, E, A, B, C, f2, K2, expand( eData, 22 ) );
	subRound( C, D, E, A, B, f2, K2, expand( eData, 23 ) );
	subRound( B, C, D, E, A, f2, K2, expand( eData, 24 ) );
	subRound( A, B, C, D, E, f2, K2, expand( eData, 25 ) );
	subRound( E, A, B, C, D, f2, K2, expand( eData, 26 ) );
	subRound( D, E, A, B, C, f2, K2, expand( eData, 27 ) );
	subRound( C, D, E, A, B, f2, K2, expand( eData, 28 ) );
	subRound( B, C, D, E, A, f2, K2, expand( eData, 29 ) );
	subRound( A, B, C, D, E, f2, K2, expand( eData, 30 ) );
	subRound( E, A, B, C, D, f2, K2, expand( eData, 31 ) );
	subRound( D, E, A, B, C, f2, K2, expand( eData, 32 ) );
	subRound( C, D, E, A, B, f2, K2, expand( eData, 33 ) );
	subRound( B, C, D, E, A, f2, K2, expand( eData, 34 ) );
	subRound( A, B, C, D, E, f2, K2, expand( eData, 35 ) );
	subRound( E, A, B, C, D, f2, K2, expand( eData, 36 ) );
	subRound( D, E, A, B, C, f2, K2, expand( eData, 37 ) );
	subRound( C, D, E, A, B, f2, K2, expand( eData, 38 ) );
	subRound( B, C, D, E, A, f2, K2, expand( eData, 39 ) );

	subRound( A, B, C, D, E, f3, K3, expand( eData, 40 ) );
	subRound( E, A, B, C, D, f3, K3, expand( eData, 41 ) );
	subRound( D, E, A, B, C, f3, K3, expand( eData, 42 ) );
	subRound( C, D, E, A, B, f3, K3, expand( eData, 43 ) );
	subRound( B, C, D, E, A, f3, K3, expand( eData, 44 ) );
	subRound( A, B, C, D, E, f3, K3, expand( eData, 45 ) );
	subRound( E, A, B, C, D, f3, K3, expand( eData, 46 ) );
	subRound( D, E, A, B, C, f3, K3, expand( eData, 47 ) );
	subRound( C, D, E, A, B, f3, K3, expand( eData, 48 ) );
	subRound( B, C, D, E, A, f3, K3, expand( eData, 49 ) );
	subRound( A, B, C, D, E, f3, K3, expand( eData, 50 ) );
	subRound( E, A, B, C, D, f3, K3, expand( eData, 51 ) );
	subRound( D, E, A, B, C, f3, K3, expand( eData, 52 ) );
	subRound( C, D, E, A, B, f3, K3, expand( eData, 53 ) );
	subRound( B, C, D, E, A, f3, K3, expand( eData, 54 ) );
	subRound( A, B, C, D, E, f3, K3, expand( eData, 55 ) );
	subRound( E, A, B, C, D, f3, K3, expand( eData, 56 ) );
	subRound( D, E, A, B, C, f3, K3, expand( eData, 57 ) );
	subRound( C, D, E, A, B, f3, K3, expand( eData, 58 ) );
	subRound( B, C, D, E, A, f3, K3, expand( eData, 59 ) );

	subRound( A, B, C, D, E, f4, K4, expand( eData, 60 ) );
	subRound( E, A, B, C, D, f4, K4, expand( eData, 61 ) );
	subRound( D, E, A, B, C, f4, K4, expand( eData, 62 ) );
	subRound( C, D, E, A, B, f4, K4, expand( eData, 63 ) );
	subRound( B, C, D, E, A, f4, K4, expand( eData, 64 ) );
	subRound( A, B, C, D, E, f4, K4, expand( eData, 65 ) );
	subRound( E, A, B, C, D, f4, K4, expand( eData, 66 ) );
	subRound( D, E, A, B, C, f4, K4, expand( eData, 67 ) );
	subRound( C, D, E, A, B, f4, K4, expand( eData, 68 ) );
	subRound( B, C, D, E, A, f4, K4, expand( eData, 69 ) );
	subRound( A, B, C, D, E, f4, K4, expand( eData, 70 ) );
	subRound( E, A, B, C, D, f4, K4, expand( eData, 71 ) );
	subRound( D, E, A, B, C, f4, K4, expand( eData, 72 ) );
	subRound( C, D, E, A, B, f4, K4, expand( eData, 73 ) );
	subRound( B, C, D, E, A, f4, K4, expand( eData, 74 ) );
	subRound( A, B, C, D, E, f4, K4, expand( eData, 75 ) );
	subRound( E, A, B, C, D, f4, K4, expand( eData, 76 ) );
	subRound( D, E, A, B, C, f4, K4, expand( eData, 77 ) );
	subRound( C, D, E, A, B, f4, K4, expand( eData, 78 ) );
	subRound( B, C, D, E, A, f4, K4, expand( eData, 79 ) );

	digest[0] += A;
	digest[1] += B;
	digest[2] += C;
	digest[3] += D;
	digest[4] += E;

	memset(eData, 0, DATASIZE);
}

NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男人的天堂亚洲一区| 亚洲同性同志一二三专区| 蜜桃免费网站一区二区三区| 日韩一区二区三区高清免费看看| 日韩主播视频在线| 欧美一区二区免费视频| 国精产品一区一区三区mba视频| 久久久精品国产免大香伊| 粉嫩一区二区三区性色av| 中文字幕中文在线不卡住| 色拍拍在线精品视频8848| 亚洲综合丝袜美腿| 日韩欧美激情在线| 国产成人精品一区二区三区四区| 国产精品久久久久精k8| 欧美性一二三区| 精品一区二区三区免费观看| 国产欧美日本一区视频| 91国产成人在线| 美国欧美日韩国产在线播放| 国产日韩欧美一区二区三区综合| 波多野结衣在线aⅴ中文字幕不卡| 一区二区三区四区蜜桃 | 亚洲一区二区三区视频在线| 欧美高清视频一二三区| 极品少妇一区二区| 亚洲欧美激情一区二区| 欧美变态tickle挠乳网站| 9人人澡人人爽人人精品| 亚洲va国产va欧美va观看| 2022国产精品视频| 欧美怡红院视频| 国产69精品久久777的优势| 午夜精品一区二区三区三上悠亚| 久久亚洲私人国产精品va媚药| 91福利视频久久久久| 国产一区二区日韩精品| 亚洲成人免费影院| 国产精品网站在线| 欧美一级黄色片| 色欧美乱欧美15图片| 久久成人精品无人区| 亚洲另类色综合网站| 26uuu亚洲婷婷狠狠天堂| 欧美日韩免费高清一区色橹橹| 国产一区二区看久久| 丝袜美腿亚洲一区| 亚洲精品中文字幕在线观看| 久久综合九色综合97婷婷女人 | 日本三级亚洲精品| 一区二区三区在线视频观看| 国产性色一区二区| 精品欧美一区二区久久 | jizz一区二区| 极品销魂美女一区二区三区| 亚洲v中文字幕| 亚洲情趣在线观看| 国产精品久久久久影院亚瑟| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩在线播放| 色综合欧美在线视频区| 成人av在线播放网址| 国产成人免费av在线| 韩国视频一区二区| 久久99精品久久久久久动态图| 日韩精品一二三四| 日一区二区三区| 婷婷综合久久一区二区三区| 亚洲第一狼人社区| 亚洲高清视频中文字幕| 亚洲成人一二三| 亚洲国产中文字幕| 亚洲成在人线在线播放| 一区二区三区在线看| 亚洲精品伦理在线| 亚洲午夜久久久久中文字幕久| 亚洲欧美日韩成人高清在线一区| 亚洲视频一区二区免费在线观看| 中文字幕欧美一区| 一区二区三区四区蜜桃| 亚洲在线中文字幕| 日韩avvvv在线播放| 人人超碰91尤物精品国产| 日本欧美久久久久免费播放网| 青青草国产精品亚洲专区无| 麻豆成人av在线| 国产一区啦啦啦在线观看| 黄色成人免费在线| 成人激情免费电影网址| 99久久伊人精品| 色狠狠色噜噜噜综合网| 欧美日韩精品免费观看视频| 91精品国产色综合久久ai换脸| 欧美一区二区三区白人| 26uuu国产日韩综合| 国产精品免费看片| 亚洲一区在线观看免费观看电影高清 | 国产一区二区三区四区五区入口 | 欧美日韩高清在线播放| 欧美一级精品大片| 国产欧美一区二区精品忘忧草| 国产精品免费aⅴ片在线观看| 一区二区三区中文免费| 日本美女一区二区| 成人动漫av在线| 欧美三级午夜理伦三级中视频| 日韩精品一区国产麻豆| 国产女人18毛片水真多成人如厕| 亚洲欧美日本在线| 免费观看在线色综合| 国产成人综合亚洲网站| 欧美亚洲自拍偷拍| 久久久久久99久久久精品网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 99精品在线观看视频| 欧美日韩一区二区三区四区| www亚洲一区| 一区二区欧美视频| 国产自产v一区二区三区c| 91丝袜美腿高跟国产极品老师 | 欧美v日韩v国产v| 中文字幕一区二区三区在线不卡| 亚洲成av人**亚洲成av**| 国产成人精品一区二 | 91精品国产高清一区二区三区| 久久精品视频在线免费观看 | 91精品国产欧美日韩| 中文字幕一区在线| 激情欧美一区二区三区在线观看| 日本精品裸体写真集在线观看| 久久综合999| 国产精品一二三区在线| 欧美精品久久久久久久多人混战| 久久精品男人天堂av| 三级欧美在线一区| 一本到三区不卡视频| 国产校园另类小说区| 奇米四色…亚洲| 色欧美乱欧美15图片| 国产亚洲欧美日韩在线一区| 日韩电影在线观看电影| 日本电影亚洲天堂一区| 国产欧美日韩中文久久| 久久99精品久久久久久国产越南 | 美女一区二区视频| 色婷婷久久久综合中文字幕| 亚洲国产成人一区二区三区| 麻豆精品国产91久久久久久| 欧美三级在线播放| 一区二区三区不卡视频在线观看| 粉嫩av一区二区三区粉嫩| 久久综合久久鬼色中文字| 蜜臀久久99精品久久久久宅男 | 欧美写真视频网站| 亚洲欧美另类久久久精品| 成人在线一区二区三区| 日韩一区二区三区观看| 日本三级亚洲精品| 91精品国产aⅴ一区二区| 天使萌一区二区三区免费观看| 在线观看日产精品| 亚洲一区二区三区四区不卡| 色999日韩国产欧美一区二区| 亚洲视频电影在线| 色婷婷av一区二区三区软件 | 欧美日韩国产美女| 亚洲va国产天堂va久久en| 欧美日韩三级一区| 亚洲成人免费在线| 91精品国产综合久久精品麻豆| 日本伊人色综合网| 欧美一区二区高清| 国产在线播放一区三区四| 久久久久高清精品| www.亚洲精品| 一区二区三区国产| 欧美另类变人与禽xxxxx| 亚洲va在线va天堂| 91精品国产麻豆| 国产美女主播视频一区| 国产精品乱子久久久久| 国产v日产∨综合v精品视频| 国产精品传媒视频| 欧美性猛交xxxx乱大交退制版| 天堂av在线一区| 久久综合久久综合九色| 99久久婷婷国产综合精品| 一区二区三区日韩| 欧美一区二区久久久| 国产成人av在线影院| 亚洲裸体xxx| 欧美一级精品大片| 国产xxx精品视频大全| 一区二区三区高清| 91精品欧美久久久久久动漫 | 韩国理伦片一区二区三区在线播放 | 91精品在线观看入口| 国产一区二区在线看| 国产精品久久久久久一区二区三区 | 亚洲午夜在线视频|