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

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

?? sha.cpp

?? 300種加解密算法的C源代碼,喜歡密碼學(xué)的朋友不要錯過~
?? 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成+人+日韩+欧美+亚洲| 成人黄色片在线观看| 久久男人中文字幕资源站| 丁香六月久久综合狠狠色| 亚洲v日本v欧美v久久精品| 久久综合九色综合97婷婷女人| 91在线无精精品入口| 麻豆91在线看| 一区二区三区在线免费观看| 久久伊99综合婷婷久久伊| 欧美三级韩国三级日本一级| 成人激情黄色小说| 免费精品视频最新在线| 中文字幕在线一区二区三区| 日韩你懂的电影在线观看| 色综合色综合色综合| 黄页视频在线91| 日韩电影免费在线观看网站| 亚洲欧美自拍偷拍色图| 久久伊人蜜桃av一区二区| 欧美福利视频导航| 在线观看视频一区| av电影在线观看完整版一区二区| 欧美挠脚心视频网站| 国产成人av电影免费在线观看| 日日夜夜免费精品| 一区二区在线看| 国产精品午夜免费| 久久综合中文字幕| 精品国产露脸精彩对白| 这里只有精品免费| 欧美日韩午夜影院| 欧美日韩在线电影| 欧美日韩激情一区二区| 在线观看视频91| 在线影院国内精品| 91同城在线观看| 99精品视频在线观看| 国产99久久久久| 国产黄色91视频| 国产精品亚洲一区二区三区妖精 | 一区二区三区四区不卡视频| 中文一区在线播放| 中文字幕一区二区三区四区| 国产女人aaa级久久久级| 国产蜜臀av在线一区二区三区| 国产午夜三级一区二区三| 久久精品一二三| 中文字幕欧美激情一区| 国产精品麻豆网站| 亚洲欧美国产77777| 亚洲男人天堂av| 一区二区三区在线观看网站| 亚洲韩国精品一区| 婷婷中文字幕综合| 日韩av在线播放中文字幕| 久久狠狠亚洲综合| 韩国女主播一区二区三区| 丰满亚洲少妇av| 9i看片成人免费高清| 在线视频一区二区三| 欧美日韩成人在线| 欧美成人video| 中文字幕精品一区二区精品绿巨人 | 日韩精品91亚洲二区在线观看| 午夜国产不卡在线观看视频| 青青草原综合久久大伊人精品| 久草这里只有精品视频| 国产精品一二三在| 一本在线高清不卡dvd| 欧美久久久久中文字幕| 欧美不卡123| 国产精品日韩精品欧美在线| 亚洲综合视频网| 青青草国产成人99久久| 国产美女娇喘av呻吟久久| 波多野结衣视频一区| 欧美—级在线免费片| 亚洲另类中文字| 奇米精品一区二区三区在线观看一| 韩国av一区二区三区在线观看| 成人免费视频免费观看| 欧美色男人天堂| 久久精品一区四区| 亚洲一区二区三区爽爽爽爽爽| 久久国产精品第一页| 91香蕉视频在线| 日韩免费看的电影| 中文字幕在线观看一区| 奇米一区二区三区| 成人激情电影免费在线观看| 7777精品伊人久久久大香线蕉完整版| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精一品亚洲二区在线视频| 成人av资源下载| 欧美日韩国产综合草草| 久久久不卡网国产精品二区| 亚洲超丰满肉感bbw| 岛国精品在线观看| 欧美一区二区大片| **性色生活片久久毛片| 久久99久国产精品黄毛片色诱| 色综合久久九月婷婷色综合| 26uuu精品一区二区在线观看| 亚洲不卡av一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产欧美精品在线观看| 日韩国产欧美一区二区三区| 菠萝蜜视频在线观看一区| 日韩免费观看高清完整版| 亚洲精品五月天| 国内精品免费**视频| 欧美视频三区在线播放| 中文字幕一区二区三区在线观看| 久久99国产精品麻豆| 91精品午夜视频| 亚洲一级不卡视频| 99久久综合国产精品| 国产色产综合产在线视频| 首页国产欧美久久| 欧美午夜电影网| 日韩美女精品在线| 国产成人综合亚洲网站| 欧美成人欧美edvon| 日本不卡视频在线| 3d动漫精品啪啪1区2区免费| 夜夜爽夜夜爽精品视频| 97久久超碰国产精品电影| 国产精品人成在线观看免费 | 国产精品不卡一区| 日韩女优av电影| 日韩高清一级片| 欧美日韩国产小视频在线观看| 亚洲欧美日韩一区二区三区在线观看| 国产成人在线视频网站| 久久亚洲二区三区| 奇米一区二区三区| 精品免费国产一区二区三区四区| 免费人成精品欧美精品| 欧美一区二区三区精品| 偷拍亚洲欧洲综合| 欧美日韩www| 日韩精品电影在线| 日韩色视频在线观看| 免费在线观看成人| 欧美不卡视频一区| 国产精品一区在线观看你懂的| 久久精品一区二区| 成人午夜精品在线| 国产精品国产自产拍高清av| 9久草视频在线视频精品| 亚洲人成网站色在线观看| 91麻豆swag| 午夜精品爽啪视频| 日韩久久免费av| 国产在线精品国自产拍免费| 国产婷婷色一区二区三区四区 | 欧美三级午夜理伦三级中视频| 亚洲福利国产精品| 欧美一区二区三区四区在线观看| 蜜臀av性久久久久av蜜臀妖精| 久久亚洲一区二区三区四区| 国产激情精品久久久第一区二区| 国产校园另类小说区| 99精品热视频| 日韩精品一级中文字幕精品视频免费观看 | 成人免费一区二区三区视频 | 久久久国产综合精品女国产盗摄| 大白屁股一区二区视频| 亚洲欧洲成人av每日更新| 在线看国产一区| 琪琪一区二区三区| 国产日韩欧美精品电影三级在线| 99视频精品在线| 性做久久久久久免费观看| 精品久久国产字幕高潮| 成人晚上爱看视频| 亚洲愉拍自拍另类高清精品| 日韩一二三四区| 99精品国产视频| 欧美96一区二区免费视频| 蜜桃av噜噜一区| 国产欧美视频在线观看| 91国产成人在线| 九一九一国产精品| 亚洲品质自拍视频网站| 精品噜噜噜噜久久久久久久久试看| 成人午夜激情片| 日韩激情av在线| 国产精品久久网站| 欧美一区二区三区在线| 成人激情文学综合网| 奇米精品一区二区三区在线观看一| 中文字幕久久午夜不卡| 91精品国产综合久久婷婷香蕉| 懂色中文一区二区在线播放| 日韩精品五月天| 亚洲乱码国产乱码精品精小说| 亚洲精品一线二线三线| 欧美三级电影一区|