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

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

?? sha.c

?? Linux下文件工具。
?? C
字號:
/* sha.c - Functions to compute the SHA1 hash (message-digest) of files   or blocks of memory.  Complies to the NIST specification FIPS-180-1.   Copyright (C) 2000, 2001 Scott G. Miller   Credits:      Robert Klep <robert@ilse.nl>  -- Expansion function fix*/#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <sys/types.h>#if STDC_HEADERS || defined _LIBC# include <stdlib.h># include <string.h>#else# ifndef HAVE_MEMCPY#  define memcpy(d, s, n) bcopy ((s), (d), (n))# endif#endif#include "md5.h"#include "sha.h"#include "unlocked-io.h"/*  Not-swap is a macro that does an endian swap on architectures that are  big-endian, as SHA needs some data in a little-endian format*/#ifdef WORDS_BIGENDIAN# define NOTSWAP(n) (n)# define SWAP(n)							\    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))#else# define NOTSWAP(n)                                                         \    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))# define SWAP(n) (n)#endif/* This array contains the bytes used to pad the buffer to the next   64-byte boundary.  (RFC 1321, 3.1: Step 1)  */static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ...  */ };/*  Takes a pointer to a 160 bit block of data (five 32 bit ints) and  intializes it to the start constants of the SHA1 algorithm.  This  must be called before using hash in the call to sha_hash*/voidsha_init_ctx (struct sha_ctx *ctx){  ctx->A = 0x67452301;  ctx->B = 0xefcdab89;  ctx->C = 0x98badcfe;  ctx->D = 0x10325476;  ctx->E = 0xc3d2e1f0;  ctx->total[0] = ctx->total[1] = 0;  ctx->buflen = 0;}/* Put result from CTX in first 20 bytes following RESBUF.  The result   must be in little endian byte order.   IMPORTANT: On some systems it is required that RESBUF is correctly   aligned for a 32 bits value.  */void *sha_read_ctx (const struct sha_ctx *ctx, void *resbuf){  ((md5_uint32 *) resbuf)[0] = NOTSWAP (ctx->A);  ((md5_uint32 *) resbuf)[1] = NOTSWAP (ctx->B);  ((md5_uint32 *) resbuf)[2] = NOTSWAP (ctx->C);  ((md5_uint32 *) resbuf)[3] = NOTSWAP (ctx->D);  ((md5_uint32 *) resbuf)[4] = NOTSWAP (ctx->E);  return resbuf;}/* Process the remaining bytes in the internal buffer and the usual   prolog according to the standard and write the result to RESBUF.   IMPORTANT: On some systems it is required that RESBUF is correctly   aligned for a 32 bits value.  */void *sha_finish_ctx (struct sha_ctx *ctx, void *resbuf){  /* Take yet unprocessed bytes into account.  */  md5_uint32 bytes = ctx->buflen;  size_t pad;  /* Now count remaining bytes.  */  ctx->total[0] += bytes;  if (ctx->total[0] < bytes)    ++ctx->total[1];  pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;  memcpy (&ctx->buffer[bytes], fillbuf, pad);  /* Put the 64-bit file length in *bits* at the end of the buffer.  */  *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = NOTSWAP (ctx->total[0] << 3);  *(md5_uint32 *) &ctx->buffer[bytes + pad] = NOTSWAP ((ctx->total[1] << 3) |						    (ctx->total[0] >> 29));  /* Process last bytes.  */  sha_process_block (ctx->buffer, bytes + pad + 8, ctx);  return sha_read_ctx (ctx, resbuf);}/* Compute SHA1 message digest for bytes read from STREAM.  The   resulting message digest number will be written into the 16 bytes   beginning at RESBLOCK.  */intsha_stream (FILE *stream, void *resblock){  /* Important: BLOCKSIZE must be a multiple of 64.  */#define BLOCKSIZE 4096  struct sha_ctx ctx;  char buffer[BLOCKSIZE + 72];  size_t sum;  /* Initialize the computation context.  */  sha_init_ctx (&ctx);  /* Iterate over full file contents.  */  while (1)    {      /* We read the file in blocks of BLOCKSIZE bytes.  One call of the	 computation function processes the whole buffer so that with the	 next round of the loop another block can be read.  */      size_t n;      sum = 0;      /* Read block.  Take care for partial reads.  */      do	{	  n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);	  sum += n;	}      while (sum < BLOCKSIZE && n != 0);      if (n == 0 && ferror (stream))        return 1;      /* If end of file is reached, end the loop.  */      if (n == 0)	break;      /* Process buffer with BLOCKSIZE bytes.  Note that			BLOCKSIZE % 64 == 0       */      sha_process_block (buffer, BLOCKSIZE, &ctx);    }  /* Add the last bytes if necessary.  */  if (sum > 0)    sha_process_bytes (buffer, sum, &ctx);  /* Construct result in desired memory.  */  sha_finish_ctx (&ctx, resblock);  return 0;}/* Compute MD5 message digest for LEN bytes beginning at BUFFER.  The   result is always in little endian byte order, so that a byte-wise   output yields to the wanted ASCII representation of the message   digest.  */void *sha_buffer (const char *buffer, size_t len, void *resblock){  struct sha_ctx ctx;  /* Initialize the computation context.  */  sha_init_ctx (&ctx);  /* Process whole buffer but last len % 64 bytes.  */  sha_process_bytes (buffer, len, &ctx);  /* Put result in desired memory area.  */  return sha_finish_ctx (&ctx, resblock);}voidsha_process_bytes (const void *buffer, size_t len, struct sha_ctx *ctx){  /* When we already have some bits in our internal buffer concatenate     both inputs first.  */  if (ctx->buflen != 0)    {      size_t left_over = ctx->buflen;      size_t add = 128 - left_over > len ? len : 128 - left_over;      memcpy (&ctx->buffer[left_over], buffer, add);      ctx->buflen += add;      if (left_over + add > 64)	{	  sha_process_block (ctx->buffer, (left_over + add) & ~63, ctx);	  /* The regions in the following copy operation cannot overlap.  */	  memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],		  (left_over + add) & 63);	  ctx->buflen = (left_over + add) & 63;	}      buffer = (const char *) buffer + add;      len -= add;    }  /* Process available complete blocks.  */  if (len > 64)    {      sha_process_block (buffer, len & ~63, ctx);      buffer = (const char *) buffer + (len & ~63);      len &= 63;    }  /* Move remaining bytes in internal buffer.  */  if (len > 0)    {      memcpy (ctx->buffer, buffer, len);      ctx->buflen = len;    }}/* --- Code below is the primary difference between md5.c and sha.c --- *//* SHA1 round constants */#define K1 0x5a827999L#define K2 0x6ed9eba1L#define K3 0x8f1bbcdcL#define K4 0xca62c1d6L/* Round functions.  Note that F2 is the same as F4.  */#define F1(B,C,D) ( D ^ ( B & ( C ^ D ) ) )#define F2(B,C,D) (B ^ C ^ D)#define F3(B,C,D) ( ( B & C ) | ( D & ( B | C ) ) )#define F4(B,C,D) (B ^ C ^ D)/* Process LEN bytes of BUFFER, accumulating context into CTX.   It is assumed that LEN % 64 == 0.   Most of this code comes from GnuPG's cipher/sha1.c.  */voidsha_process_block (const void *buffer, size_t len, struct sha_ctx *ctx){  const md5_uint32 *words = buffer;  size_t nwords = len / sizeof (md5_uint32);  const md5_uint32 *endp = words + nwords;  md5_uint32 x[16];  md5_uint32 a = ctx->A;  md5_uint32 b = ctx->B;  md5_uint32 c = ctx->C;  md5_uint32 d = ctx->D;  md5_uint32 e = ctx->E;  /* First increment the byte count.  RFC 1321 specifies the possible     length of the file up to 2^64 bits.  Here we only compute the     number of bytes.  Do a double word increment.  */  ctx->total[0] += len;  if (ctx->total[0] < len)    ++ctx->total[1];#define M(I) ( tm =   x[I&0x0f] ^ x[(I-14)&0x0f] \		    ^ x[(I-8)&0x0f] ^ x[(I-3)&0x0f] \	       , (x[I&0x0f] = rol(tm, 1)) )#define R(A,B,C,D,E,F,K,M)  do { E += rol( A, 5 )     \				      + F( B, C, D )  \				      + K	      \				      + M;	      \				 B = rol( B, 30 );    \			       } while(0)  while (words < endp)    {      md5_uint32 tm;      int t;      /* FIXME: see sha1.c for a better implementation.  */      for (t = 0; t < 16; t++)	{	  x[t] = NOTSWAP (*words);	  words++;	}      R( a, b, c, d, e, F1, K1, x[ 0] );      R( e, a, b, c, d, F1, K1, x[ 1] );      R( d, e, a, b, c, F1, K1, x[ 2] );      R( c, d, e, a, b, F1, K1, x[ 3] );      R( b, c, d, e, a, F1, K1, x[ 4] );      R( a, b, c, d, e, F1, K1, x[ 5] );      R( e, a, b, c, d, F1, K1, x[ 6] );      R( d, e, a, b, c, F1, K1, x[ 7] );      R( c, d, e, a, b, F1, K1, x[ 8] );      R( b, c, d, e, a, F1, K1, x[ 9] );      R( a, b, c, d, e, F1, K1, x[10] );      R( e, a, b, c, d, F1, K1, x[11] );      R( d, e, a, b, c, F1, K1, x[12] );      R( c, d, e, a, b, F1, K1, x[13] );      R( b, c, d, e, a, F1, K1, x[14] );      R( a, b, c, d, e, F1, K1, x[15] );      R( e, a, b, c, d, F1, K1, M(16) );      R( d, e, a, b, c, F1, K1, M(17) );      R( c, d, e, a, b, F1, K1, M(18) );      R( b, c, d, e, a, F1, K1, M(19) );      R( a, b, c, d, e, F2, K2, M(20) );      R( e, a, b, c, d, F2, K2, M(21) );      R( d, e, a, b, c, F2, K2, M(22) );      R( c, d, e, a, b, F2, K2, M(23) );      R( b, c, d, e, a, F2, K2, M(24) );      R( a, b, c, d, e, F2, K2, M(25) );      R( e, a, b, c, d, F2, K2, M(26) );      R( d, e, a, b, c, F2, K2, M(27) );      R( c, d, e, a, b, F2, K2, M(28) );      R( b, c, d, e, a, F2, K2, M(29) );      R( a, b, c, d, e, F2, K2, M(30) );      R( e, a, b, c, d, F2, K2, M(31) );      R( d, e, a, b, c, F2, K2, M(32) );      R( c, d, e, a, b, F2, K2, M(33) );      R( b, c, d, e, a, F2, K2, M(34) );      R( a, b, c, d, e, F2, K2, M(35) );      R( e, a, b, c, d, F2, K2, M(36) );      R( d, e, a, b, c, F2, K2, M(37) );      R( c, d, e, a, b, F2, K2, M(38) );      R( b, c, d, e, a, F2, K2, M(39) );      R( a, b, c, d, e, F3, K3, M(40) );      R( e, a, b, c, d, F3, K3, M(41) );      R( d, e, a, b, c, F3, K3, M(42) );      R( c, d, e, a, b, F3, K3, M(43) );      R( b, c, d, e, a, F3, K3, M(44) );      R( a, b, c, d, e, F3, K3, M(45) );      R( e, a, b, c, d, F3, K3, M(46) );      R( d, e, a, b, c, F3, K3, M(47) );      R( c, d, e, a, b, F3, K3, M(48) );      R( b, c, d, e, a, F3, K3, M(49) );      R( a, b, c, d, e, F3, K3, M(50) );      R( e, a, b, c, d, F3, K3, M(51) );      R( d, e, a, b, c, F3, K3, M(52) );      R( c, d, e, a, b, F3, K3, M(53) );      R( b, c, d, e, a, F3, K3, M(54) );      R( a, b, c, d, e, F3, K3, M(55) );      R( e, a, b, c, d, F3, K3, M(56) );      R( d, e, a, b, c, F3, K3, M(57) );      R( c, d, e, a, b, F3, K3, M(58) );      R( b, c, d, e, a, F3, K3, M(59) );      R( a, b, c, d, e, F4, K4, M(60) );      R( e, a, b, c, d, F4, K4, M(61) );      R( d, e, a, b, c, F4, K4, M(62) );      R( c, d, e, a, b, F4, K4, M(63) );      R( b, c, d, e, a, F4, K4, M(64) );      R( a, b, c, d, e, F4, K4, M(65) );      R( e, a, b, c, d, F4, K4, M(66) );      R( d, e, a, b, c, F4, K4, M(67) );      R( c, d, e, a, b, F4, K4, M(68) );      R( b, c, d, e, a, F4, K4, M(69) );      R( a, b, c, d, e, F4, K4, M(70) );      R( e, a, b, c, d, F4, K4, M(71) );      R( d, e, a, b, c, F4, K4, M(72) );      R( c, d, e, a, b, F4, K4, M(73) );      R( b, c, d, e, a, F4, K4, M(74) );      R( a, b, c, d, e, F4, K4, M(75) );      R( e, a, b, c, d, F4, K4, M(76) );      R( d, e, a, b, c, F4, K4, M(77) );      R( c, d, e, a, b, F4, K4, M(78) );      R( b, c, d, e, a, F4, K4, M(79) );      a = ctx->A += a;      b = ctx->B += b;      c = ctx->C += c;      d = ctx->D += d;      e = ctx->E += e;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲影视婷婷| 天堂资源在线中文精品| 亚洲午夜激情av| 久久精品99久久久| 欧美视频在线播放| 国产精品热久久久久夜色精品三区| 亚洲一区二区三区自拍| 顶级嫩模精品视频在线看| 在线不卡的av| 亚洲午夜激情网站| 欧美在线一二三| 国产精品国产自产拍高清av| 久国产精品韩国三级视频| 欧美精品亚洲二区| 亚洲自拍另类综合| 95精品视频在线| 国产精品久久久久久久岛一牛影视 | 一区二区三区欧美| 成人美女视频在线看| 久久免费美女视频| 国产乱码精品1区2区3区| 日韩午夜激情免费电影| 亚洲超碰97人人做人人爱| 色哟哟精品一区| 国产精品污www在线观看| 韩国精品在线观看| 精品美女被调教视频大全网站| 无码av免费一区二区三区试看 | 国产一区 二区| 精品国产一区a| 韩日欧美一区二区三区| 精品少妇一区二区三区在线视频| 美腿丝袜亚洲综合| 日韩精品一区在线观看| 久久国产精品99精品国产| 欧美成人一区二区三区在线观看| 日韩成人精品在线观看| 欧美成人福利视频| 久久99国内精品| 久久精品人人做人人爽人人| 国产成人aaa| 亚洲视频你懂的| 欧美日韩专区在线| 奇米一区二区三区av| 日韩女优毛片在线| 成人午夜在线播放| 一区二区三区中文字幕电影 | 99综合电影在线视频| 久久久久久97三级| 91在线视频免费91| 亚洲国产欧美在线| 日韩一区二区三区在线观看| 国内精品伊人久久久久影院对白| 久久精品视频在线免费观看| a美女胸又www黄视频久久| 一区二区三区美女视频| 欧美高清一级片在线| 国产在线国偷精品免费看| 中文字幕在线一区二区三区| 欧美综合视频在线观看| 蜜臀av在线播放一区二区三区| 久久久不卡网国产精品二区| 色综合天天综合给合国产| 日韩影视精彩在线| 中文字幕av免费专区久久| 欧美日本在线视频| 国产福利一区二区三区视频| 亚洲精选一二三| 精品国产伦一区二区三区观看方式| 国产精品一区二区免费不卡| 亚洲欧美成aⅴ人在线观看| 91精品国产aⅴ一区二区| 成人免费高清视频在线观看| 五月婷婷久久综合| 国产精品天干天干在线综合| 欧美日韩aaaaaa| av高清久久久| 国产真实乱偷精品视频免| 亚洲精品成人悠悠色影视| 久久综合久久久久88| 欧美午夜精品免费| 国产不卡在线播放| 蜜臀av一级做a爰片久久| 1000部国产精品成人观看| 日韩欧美中文字幕精品| 91在线免费播放| 国产精品一品二品| 免费在线欧美视频| 亚洲精品国产成人久久av盗摄| 久久精品一区二区三区四区| 91精品国产日韩91久久久久久| 一本色道久久综合精品竹菊| 国产激情视频一区二区三区欧美 | 成人精品一区二区三区四区| 免费观看日韩av| 亚洲国产成人高清精品| **性色生活片久久毛片| 久久伊人蜜桃av一区二区| 日韩欧美在线影院| 欧美日韩情趣电影| 欧美日韩国产精品成人| 91国产免费观看| 色网站国产精品| 91麻豆蜜桃一区二区三区| 91麻豆精东视频| 成人黄色片在线观看| 国产乱子伦一区二区三区国色天香 | 久久精品水蜜桃av综合天堂| 亚洲精品在线免费播放| 91麻豆精品国产91久久久资源速度 | 精品一区二区三区欧美| 奇米色一区二区| 日本vs亚洲vs韩国一区三区二区| 午夜亚洲国产au精品一区二区| 一区二区三区久久久| 一区二区三区四区国产精品| 亚洲欧美成人一区二区三区| 一区二区三区日韩在线观看| 一区二区三区视频在线看| 一区二区三区在线免费视频| 一区二区三区四区精品在线视频| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品久久久久四虎| 亚洲视频一区在线观看| 一区二区三区中文字幕精品精品| 亚洲最新视频在线观看| 性久久久久久久久久久久| 日本aⅴ精品一区二区三区| 久久精品av麻豆的观看方式| 国产成人精品免费网站| 91色在线porny| 欧美日韩国产综合视频在线观看| 欧美一区二区网站| wwwwww.欧美系列| 中文字幕免费一区| 一区二区三区小说| 久久er精品视频| 国产成人欧美日韩在线电影| 日本韩国一区二区| 欧美成人精品福利| 国产精品美女www爽爽爽| 亚洲一区欧美一区| 美女精品自拍一二三四| 成人午夜av在线| 欧美色倩网站大全免费| 日韩精品一区二区三区在线| 国产精品久久久久久久久快鸭| 亚洲综合久久av| 激情小说欧美图片| 在线视频欧美区| 久久久久久久久伊人| 一区二区欧美国产| 韩国三级中文字幕hd久久精品| 一本一道久久a久久精品| 制服视频三区第一页精品| 国产精品区一区二区三| 亚瑟在线精品视频| 高清成人在线观看| 欧美肥妇bbw| 亚洲天堂网中文字| 国内精品免费**视频| 91久久奴性调教| 国产午夜精品福利| 麻豆freexxxx性91精品| 色屁屁一区二区| 国产精品理论在线观看| 麻豆一区二区三| 欧美日韩一级二级| 亚洲欧洲三级电影| 国产最新精品免费| 911精品产国品一二三产区| 1024成人网色www| 国产99久久久国产精品潘金网站| 欧美影视一区二区三区| 亚洲欧洲www| 国产91丝袜在线播放九色| 欧美一区二区三区日韩视频| 国产精品天美传媒| 极品美女销魂一区二区三区免费 | 亚洲精品视频在线| 国产精品69毛片高清亚洲| 欧美一区二区三区精品| 亚洲一区二区三区在线| 91丨porny丨首页| 国产欧美一区二区三区鸳鸯浴 | 日本不卡视频在线| 欧美在线观看一二区| 国产精品麻豆一区二区| 精品一区二区久久| 日韩小视频在线观看专区| 日本欧美一区二区| 日韩一区二区免费电影| 天使萌一区二区三区免费观看| 91小宝寻花一区二区三区| 国产精品久久久久久久久久免费看 | 91成人免费在线| 伊人开心综合网| 在线精品亚洲一区二区不卡| 亚洲精品美国一| 91福利小视频|