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

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

?? sha.cpp

?? 300種常用加解密算法的源碼C++實現。
?? 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一区二区三区免费野_久草精品视频
在线观看成人小视频| 中文字幕精品一区二区三区精品| 91精品国产综合久久福利软件| 亚洲一区二区美女| 欧美日韩一区国产| 蜜桃视频一区二区三区| 欧美老女人在线| 免费在线观看不卡| 精品国产在天天线2019| 国产精品 欧美精品| 亚洲少妇中出一区| 欧美影院一区二区| 久久精品国产澳门| 奇米影视一区二区三区| 久久久亚洲国产美女国产盗摄| 99久久精品费精品国产一区二区| 亚洲一区二区三区四区中文字幕 | 欧美久久一二区| 亚洲一级在线观看| www亚洲一区| 国产亚洲欧美色| 亚洲精品一区二区三区蜜桃下载| 美女尤物国产一区| 美日韩一区二区三区| 欧美韩国日本综合| 91免费观看国产| 日本v片在线高清不卡在线观看| 精品国产一区久久| 成人网男人的天堂| 欧美成人免费网站| 欧美中文一区二区三区| 福利视频网站一区二区三区| 国产做a爰片久久毛片 | 婷婷中文字幕一区三区| 亚洲区小说区图片区qvod| 亚洲欧美在线高清| 亚洲综合图片区| 日韩国产欧美三级| 成人精品免费看| 99riav久久精品riav| 6080yy午夜一二三区久久| 欧美唯美清纯偷拍| 99国产精品国产精品久久| 国产成人精品aa毛片| 精品不卡在线视频| 久久国产剧场电影| 欧美日韩在线一区二区| 国产精品你懂的| 极品瑜伽女神91| 69成人精品免费视频| 久久天堂av综合合色蜜桃网| 亚洲欧美日韩中文字幕一区二区三区 | 午夜精品一区二区三区电影天堂| 日韩电影在线一区二区| 国产成人午夜片在线观看高清观看| 成人18视频日本| 久久亚洲精品国产精品紫薇| 亚洲一卡二卡三卡四卡| 国产精品一区久久久久| 正在播放亚洲一区| 亚洲三级免费观看| 成人激情免费视频| 成人欧美一区二区三区1314| 日本免费新一区视频| 欧美性生活一区| 亚洲高清三级视频| 欧美理论在线播放| 免费在线看成人av| 精品国产百合女同互慰| 91欧美一区二区| 亚洲国产美女搞黄色| 色天使久久综合网天天| 亚洲欧美日韩久久精品| 欧美亚洲动漫精品| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美视频在线观看| 国产99久久久国产精品免费看| 中文字幕成人网| 欧美日韩三级视频| 国产在线精品一区二区| 国产精品私人影院| 欧美又粗又大又爽| 免费在线一区观看| 国产精品久久久久aaaa| 日韩欧美中文一区二区| 91影视在线播放| 久久精品国内一区二区三区| 欧美白人最猛性xxxxx69交| 国产福利91精品一区二区三区| 成人免费在线视频观看| 欧美日韩国产经典色站一区二区三区| 亚洲午夜国产一区99re久久| 精品裸体舞一区二区三区| 91极品视觉盛宴| 懂色av一区二区在线播放| 日本不卡视频在线| 一区二区欧美视频| 中文字幕一区二区视频| 精品免费视频一区二区| 日韩女优av电影| 日韩欧美亚洲一区二区| 欧美精品免费视频| 欧美视频在线一区二区三区| 国产电影一区在线| 欧美主播一区二区三区| 国产91对白在线观看九色| 精品一区二区三区在线观看| 亚洲电影视频在线| 日产欧产美韩系列久久99| 亚洲成人手机在线| 琪琪久久久久日韩精品| 麻豆专区一区二区三区四区五区| 亚州成人在线电影| 麻豆国产精品官网| 国产精品一二三在| 成熟亚洲日本毛茸茸凸凹| 成人黄色在线视频| 欧美日韩一级二级| 337p粉嫩大胆色噜噜噜噜亚洲 | 精品国产凹凸成av人导航| 欧美精品一区二区久久久| 久久久另类综合| 国产精品久久久久久久久久久免费看| 一区二区中文视频| 日韩和欧美的一区| 久久 天天综合| 色婷婷久久久久swag精品| 久久综合九色综合97婷婷| 亚洲图片另类小说| 久久精品99久久久| 一本色道a无线码一区v| 日韩午夜在线观看| 中文字幕亚洲精品在线观看| 天使萌一区二区三区免费观看| 国产不卡免费视频| 日韩欧美在线影院| 视频一区二区三区中文字幕| 国产成人精品亚洲777人妖| 91精品久久久久久蜜臀| 亚洲欧美激情在线| 菠萝蜜视频在线观看一区| 久久久久久电影| 激情图片小说一区| 日韩久久免费av| 久草中文综合在线| 91精品国产综合久久福利软件 | 日韩精品一区二区三区蜜臀| 亚洲一卡二卡三卡四卡无卡久久| 丁香啪啪综合成人亚洲小说| 2024国产精品| 国产精品一区二区三区乱码| 久久综合久久综合亚洲| 国产一区二区不卡| 日本一区二区三区四区| 国产精品亚洲а∨天堂免在线| 日韩午夜av一区| 国内外精品视频| 国产欧美一区二区三区在线看蜜臀| 毛片不卡一区二区| 中文无字幕一区二区三区| 成人永久免费视频| 亚洲猫色日本管| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品久线观看视频| 在线观看91视频| 美日韩黄色大片| 国产精品电影院| 日韩亚洲欧美一区| 国产成人av福利| 香蕉加勒比综合久久| 国产亲近乱来精品视频| av不卡一区二区三区| 全部av―极品视觉盛宴亚洲| 欧美激情一二三区| 91精品国产色综合久久不卡电影| 国产成人av电影| 麻豆精品新av中文字幕| 国产精品福利影院| 26uuu国产在线精品一区二区| 91黄色免费网站| av在线不卡网| 国产乱理伦片在线观看夜一区 | 亚洲国产精品精华液网站| 国产精品水嫩水嫩| 国产欧美日韩中文久久| 日韩午夜激情免费电影| 欧美日韩免费一区二区三区视频| 成人av电影在线| 国产91精品精华液一区二区三区| 久久国产精品99精品国产| 亚洲h动漫在线| 天堂va蜜桃一区二区三区漫画版| 亚洲老妇xxxxxx| 亚洲综合色网站| 亚洲国产精品久久一线不卡| 一区二区三区欧美在线观看| 国产精品国产三级国产| 亚洲欧美在线另类| 亚洲一二三级电影| 麻豆精品在线播放|