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

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

?? sha.cpp

?? 收集了三百種加解密算法的VC源程序,請大家參考!
?? 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一区二区三区免费野_久草精品视频
欧美成人精精品一区二区频| 国产欧美日韩在线看| 欧美一区二区国产| 日韩毛片精品高清免费| 另类小说综合欧美亚洲| 成人国产电影网| 欧美日韩精品一区二区三区蜜桃 | 精品99999| 亚洲影院久久精品| 国产91在线看| 精品久久久久久久一区二区蜜臀| 亚洲欧美日韩中文播放| 国产乱码精品一区二区三区五月婷 | 成人免费高清在线观看| 91精品国产综合久久精品麻豆 | 亚洲美腿欧美偷拍| 国产精品1区2区3区在线观看| 欧美巨大另类极品videosbest | 欧美日韩国产高清一区二区| 国产精品久久久久影院| 久久国产乱子精品免费女| 欧美三级欧美一级| 一区二区高清在线| 91在线观看高清| 国产网红主播福利一区二区| 久久99国产精品免费| 7777精品伊人久久久大香线蕉超级流畅| 国产精品久久精品日日| 国产xxx精品视频大全| 久久先锋资源网| 国产一区二区三区免费播放| 精品人在线二区三区| 精品亚洲porn| 精品捆绑美女sm三区| 国产一区在线不卡| 久久婷婷国产综合精品青草| 美女网站色91| 欧美videos大乳护士334| 麻豆精品视频在线观看视频| 日韩免费观看2025年上映的电影| 日本中文字幕一区二区有限公司| 欧美美女视频在线观看| 美日韩一区二区三区| 日韩欧美国产高清| 精品一区二区三区久久久| 精品国一区二区三区| 国内精品免费在线观看| 久久影音资源网| 成人激情免费视频| 亚洲精品国久久99热| 欧美日韩一区二区电影| 午夜视频在线观看一区二区三区| 欧美日韩另类国产亚洲欧美一级| 青青国产91久久久久久| 精品久久久久久久久久久久久久久久久| 看国产成人h片视频| 欧美精品一区二区高清在线观看| 韩国精品一区二区| 国产精品美女久久久久久久久 | 亚洲精品乱码久久久久久黑人| 色狠狠一区二区三区香蕉| 亚洲国产wwwccc36天堂| 欧美电视剧免费全集观看| 国产一区二区0| 亚洲欧美在线aaa| 欧美日韩在线播放一区| 国产一区亚洲一区| 亚洲黄色尤物视频| 精品精品国产高清一毛片一天堂| 成人毛片老司机大片| 亚洲午夜成aⅴ人片| 久久夜色精品国产噜噜av| 91亚洲国产成人精品一区二三| 午夜伦理一区二区| 国产目拍亚洲精品99久久精品| 在线观看区一区二| 国产在线一区观看| 亚洲一区二区偷拍精品| 久久久久亚洲综合| 欧美欧美欧美欧美| 91日韩在线专区| 麻豆91小视频| 亚洲精品中文字幕乱码三区| 欧美成人精品福利| 欧美日韩免费不卡视频一区二区三区| 国产成人在线免费| 日韩电影免费在线| 一区二区三区四区在线播放| 久久一区二区三区四区| 5566中文字幕一区二区电影| 91浏览器在线视频| 国产乱码一区二区三区| 免费人成精品欧美精品| 一区二区三区丝袜| 国产精品久久精品日日| 久久综合资源网| 日韩一级免费一区| 欧美中文字幕不卡| 91视频在线观看| 成人h精品动漫一区二区三区| 免费日本视频一区| 日韩精品电影一区亚洲| 亚洲一区二区三区影院| 日韩美女啊v在线免费观看| 国产亚洲一本大道中文在线| 在线电影一区二区三区| 在线观看日韩电影| 欧美性大战久久久| 色天天综合色天天久久| 91色婷婷久久久久合中文| 成人免费福利片| 99热99精品| 99精品国产91久久久久久 | 欧美性猛片xxxx免费看久爱| voyeur盗摄精品| 成人av在线资源网站| 粉嫩欧美一区二区三区高清影视| 国产在线播放一区三区四| 精品一区在线看| 久久国产福利国产秒拍| 久久精品av麻豆的观看方式| 日韩av一区二区三区| 视频一区欧美精品| 奇米影视一区二区三区| 日本伊人色综合网| 久久国产视频网| 国产在线精品一区二区三区不卡| 久久99精品国产| 国产精品综合网| 成人黄色国产精品网站大全在线免费观看| 韩国av一区二区三区在线观看 | 午夜av区久久| 日韩电影在线免费看| 激情图区综合网| 国产精品99久久久久久有的能看| 国产v日产∨综合v精品视频| 成人视屏免费看| 色综合天天综合网天天狠天天| 欧美专区亚洲专区| 日韩视频免费直播| 国产午夜亚洲精品不卡| 日韩一区欧美小说| 午夜精品福利一区二区三区蜜桃| 秋霞午夜av一区二区三区| 国产一区二区三区观看| 91麻豆国产福利在线观看| 欧美一区二区精品在线| 久久久久免费观看| 亚洲综合一区二区| 狠狠色丁香久久婷婷综| 99精品偷自拍| 91精品国产乱码久久蜜臀| 欧美国产成人在线| 亚洲一级不卡视频| 国产一区啦啦啦在线观看| 色综合久久88色综合天天6| 欧美一级精品大片| 中文乱码免费一区二区| 日日夜夜免费精品视频| 成人免费三级在线| 欧美一区二区视频在线观看2020| 中文字幕不卡在线观看| 日本亚洲最大的色成网站www| 国产精品一区二区视频| 欧美日韩在线综合| 自拍偷拍亚洲综合| 国产制服丝袜一区| 欧美日韩视频专区在线播放| 国产女主播一区| 另类欧美日韩国产在线| 91蜜桃在线观看| 久久久久9999亚洲精品| 天天综合色天天| 成人精品一区二区三区中文字幕| 这里是久久伊人| 亚洲理论在线观看| 成人免费观看视频| 久久精品日韩一区二区三区| 亚洲一级不卡视频| 99久久精品国产精品久久| 久久夜色精品一区| 久久精品国产久精国产| 欧美一区二区三区在| 依依成人综合视频| 成人黄页在线观看| 中文成人综合网| 成人午夜视频免费看| 国产三级欧美三级日产三级99| 日本不卡一二三区黄网| 欧美日韩亚洲综合在线| 亚洲黄色片在线观看| 91影院在线免费观看| 国产精品青草综合久久久久99| 国产一区二区三区香蕉| 日韩精品一区二区三区视频播放 | 欧美精品一区二区三区在线播放| 午夜影院久久久| 欧美日韩一级大片网址| 亚洲成人av福利| 9191成人精品久久|