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

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

?? sha1.c

?? MD5的典型應用是對一段信息(Message)產生信息摘要(Message-Digest)
?? C
字號:
#ifndef _SHA1_H
#define _SHA1_H

#ifndef uint8
#define uint8  unsigned char
#endif

#ifndef uint32
#define uint32 unsigned long int
#endif

typedef struct
{
    uint32 total[2];
    uint32 state[5];
    uint8 buffer[64];
}
sha1_context;

void sha1_starts( sha1_context *ctx );
void sha1_update( sha1_context *ctx, uint8 *input, uint32 length );
void sha1_finish( sha1_context *ctx, uint8 digest[20] );

#endif /* sha1.h */




/*
 *  FIPS-180-1 compliant SHA-1 implementation
 *
 *  Copyright (C) 2001-2003  Christophe Devine
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include <string.h>

//#include "sha1.h"

#define GET_UINT32(n,b,i)                       \
{                                               \
    (n) = ( (uint32) (b)[(i)    ] << 24 )       \
        | ( (uint32) (b)[(i) + 1] << 16 )       \
        | ( (uint32) (b)[(i) + 2] <<  8 )       \
        | ( (uint32) (b)[(i) + 3]       );      \
}

#define PUT_UINT32(n,b,i)                       \
{                                               \
    (b)[(i)    ] = (uint8) ( (n) >> 24 );       \
    (b)[(i) + 1] = (uint8) ( (n) >> 16 );       \
    (b)[(i) + 2] = (uint8) ( (n) >>  8 );       \
    (b)[(i) + 3] = (uint8) ( (n)       );       \
}

void sha1_starts( sha1_context *ctx )
{
    ctx->total[0] = 0;
    ctx->total[1] = 0;

    ctx->state[0] = 0x67452301;
    ctx->state[1] = 0xEFCDAB89;
    ctx->state[2] = 0x98BADCFE;
    ctx->state[3] = 0x10325476;
    ctx->state[4] = 0xC3D2E1F0;
}

void sha1_process( sha1_context *ctx, uint8 data[64] )
{
    uint32 temp, W[16], A, B, C, D, E;

    GET_UINT32( W[0],  data,  0 );
    GET_UINT32( W[1],  data,  4 );
    GET_UINT32( W[2],  data,  8 );
    GET_UINT32( W[3],  data, 12 );
    GET_UINT32( W[4],  data, 16 );
    GET_UINT32( W[5],  data, 20 );
    GET_UINT32( W[6],  data, 24 );
    GET_UINT32( W[7],  data, 28 );
    GET_UINT32( W[8],  data, 32 );
    GET_UINT32( W[9],  data, 36 );
    GET_UINT32( W[10], data, 40 );
    GET_UINT32( W[11], data, 44 );
    GET_UINT32( W[12], data, 48 );
    GET_UINT32( W[13], data, 52 );
    GET_UINT32( W[14], data, 56 );
    GET_UINT32( W[15], data, 60 );

#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))

#define R(t)                                            \
(                                                       \
    temp = W[(t -  3) & 0x0F] ^ W[(t - 8) & 0x0F] ^     \
           W[(t - 14) & 0x0F] ^ W[ t      & 0x0F],      \
    ( W[t & 0x0F] = S(temp,1) )                         \
)

#define P(a,b,c,d,e,x)                                  \
{                                                       \
    e += S(a,5) + F(b,c,d) + K + x; b = S(b,30);        \
}

    A = ctx->state[0];
    B = ctx->state[1];
    C = ctx->state[2];
    D = ctx->state[3];
    E = ctx->state[4];

#define F(x,y,z) (z ^ (x & (y ^ z)))
#define K 0x5A827999

    P( A, B, C, D, E, W[0]  );
    P( E, A, B, C, D, W[1]  );
    P( D, E, A, B, C, W[2]  );
    P( C, D, E, A, B, W[3]  );
    P( B, C, D, E, A, W[4]  );
    P( A, B, C, D, E, W[5]  );
    P( E, A, B, C, D, W[6]  );
    P( D, E, A, B, C, W[7]  );
    P( C, D, E, A, B, W[8]  );
    P( B, C, D, E, A, W[9]  );
    P( A, B, C, D, E, W[10] );
    P( E, A, B, C, D, W[11] );
    P( D, E, A, B, C, W[12] );
    P( C, D, E, A, B, W[13] );
    P( B, C, D, E, A, W[14] );
    P( A, B, C, D, E, W[15] );
    P( E, A, B, C, D, R(16) );
    P( D, E, A, B, C, R(17) );
    P( C, D, E, A, B, R(18) );
    P( B, C, D, E, A, R(19) );

#undef K
#undef F

#define F(x,y,z) (x ^ y ^ z)
#define K 0x6ED9EBA1

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

#undef K
#undef F

#define F(x,y,z) ((x & y) | (z & (x | y)))
#define K 0x8F1BBCDC

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

#undef K
#undef F

#define F(x,y,z) (x ^ y ^ z)
#define K 0xCA62C1D6

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

#undef K
#undef F

    ctx->state[0] += A;
    ctx->state[1] += B;
    ctx->state[2] += C;
    ctx->state[3] += D;
    ctx->state[4] += E;
}

void sha1_update( sha1_context *ctx, uint8 *input, uint32 length )
{
    uint32 left, fill;

    if( ! length ) return;

    left = ctx->total[0] & 0x3F;
    fill = 64 - left;

    ctx->total[0] += length;
    ctx->total[0] &= 0xFFFFFFFF;

    if( ctx->total[0] < length )
        ctx->total[1]++;

    if( left && length >= fill )
    {
        memcpy( (void *) (ctx->buffer + left),
                (void *) input, fill );
        sha1_process( ctx, ctx->buffer );
        length -= fill;
        input  += fill;
        left = 0;
    }

    while( length >= 64 )
    {
        sha1_process( ctx, input );
        length -= 64;
        input  += 64;
    }

    if( length )
    {
        memcpy( (void *) (ctx->buffer + left),
                (void *) input, length );
    }
}

static uint8 sha1_padding[64] =
{
 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

void sha1_finish( sha1_context *ctx, uint8 digest[20] )
{
    uint32 last, padn;
    uint32 high, low;
    uint8 msglen[8];

    high = ( ctx->total[0] >> 29 )
         | ( ctx->total[1] <<  3 );
    low  = ( ctx->total[0] <<  3 );

    PUT_UINT32( high, msglen, 0 );
    PUT_UINT32( low,  msglen, 4 );

    last = ctx->total[0] & 0x3F;
    padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );

    sha1_update( ctx, sha1_padding, padn );
    sha1_update( ctx, msglen, 8 );

    PUT_UINT32( ctx->state[0], digest,  0 );
    PUT_UINT32( ctx->state[1], digest,  4 );
    PUT_UINT32( ctx->state[2], digest,  8 );
    PUT_UINT32( ctx->state[3], digest, 12 );
    PUT_UINT32( ctx->state[4], digest, 16 );
}



#include <stdlib.h>
#include <stdio.h>

/*
 * those are the standard FIPS-180-1 test vectors
 */

static char *msg[] = 
{
    "abc",
    "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
    NULL
};

static char *val[] =
{
    "a9993e364706816aba3e25717850c26c9cd0d89d",
    "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
    "34aa973cd4c4daa4f61eeb2bdbad27316534016f"
};

int main( int argc, char *argv[] )
{
    FILE *f;
    int i, j;
    char output[41];
    sha1_context ctx;
    unsigned char buf[1000];
    unsigned char sha1sum[20];

    if( argc < 2 )
    {
        printf( "\n SHA-1 Validation Tests:\n\n" );

        for( i = 0; i < 3; i++ )
        {
            printf( " Test %d ", i + 1 );

            sha1_starts( &ctx );

            if( i < 2 )
            {
                sha1_update( &ctx, (uint8 *) msg[i],
                             strlen( msg[i] ) );
            }
            else
            {
                memset( buf, 'a', 1000 );

                for( j = 0; j < 1000; j++ )
                {
                    sha1_update( &ctx, (uint8 *) buf, 1000 );
                }
            }

            sha1_finish( &ctx, sha1sum );

            for( j = 0; j < 20; j++ )
            {
                sprintf( output + j * 2, "%02x", sha1sum[j] );
            }

            if( memcmp( output, val[i], 40 ) )
            {
                printf( "failed!\n" );
                return( 1 );
            }

            printf( "passed.\n" );
        }

        printf( "\n" );
    }
    else
    {
        if( ! ( f = fopen( argv[1], "rb" ) ) )
        {
            perror( "fopen" );
            return( 1 );
        }

        sha1_starts( &ctx );

        while( ( i = fread( buf, 1, sizeof( buf ), f ) ) > 0 )
        {
            sha1_update( &ctx, buf, i );
        }

        sha1_finish( &ctx, sha1sum );

        for( j = 0; j < 20; j++ )
        {
            printf( "%02x", sha1sum[j] );
        }

        printf( "  %s\n", argv[1] );
    }

    return( 0 );
}






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩在线一区| 在线看国产一区| 亚洲国产综合在线| 综合久久一区二区三区| 国产精品青草综合久久久久99| 欧美电影免费观看完整版| 777亚洲妇女| 日韩免费高清电影| 亚洲精品在线观| 国产日韩欧美麻豆| ...av二区三区久久精品| 亚洲三级免费观看| 婷婷综合另类小说色区| 日韩激情视频在线观看| 久久精品国产一区二区| 国产一区二区三区不卡在线观看 | 成人av电影在线| 一本大道综合伊人精品热热| 色综合视频一区二区三区高清| 欧美三级三级三级爽爽爽| 日韩欧美中文字幕精品| 久久久另类综合| 亚洲视频一区在线| 天天影视涩香欲综合网| 国产综合久久久久久久久久久久| 国产成人高清在线| 欧美在线你懂得| 欧美zozozo| 亚洲欧美日韩国产成人精品影院| 亚洲成在线观看| 国产激情视频一区二区三区欧美 | 日韩精品亚洲专区| 国产精品自拍av| 色噜噜狠狠成人中文综合| 91精品国产综合久久福利软件| 久久久三级国产网站| 亚洲影视在线播放| 国产成人aaa| 777亚洲妇女| 亚洲激情图片小说视频| 国内外成人在线| 欧美影院一区二区三区| 久久精品欧美一区二区三区不卡 | 日韩一区二区免费电影| 国产精品网站在线| 美女国产一区二区| 91麻豆精品91久久久久久清纯 | 99久久99精品久久久久久| 欧美日韩电影在线| 国产精品成人一区二区艾草 | 国产在线国偷精品免费看| 91久久精品午夜一区二区| 国产农村妇女毛片精品久久麻豆 | 五月天激情小说综合| 成人黄色电影在线| 欧美mv日韩mv亚洲| 日精品一区二区| 99国产精品国产精品久久| xfplay精品久久| 麻豆高清免费国产一区| 欧美午夜精品久久久久久孕妇| 久久久久久99久久久精品网站| 丝袜脚交一区二区| 欧美性受xxxx| 一区二区三区欧美| 91色.com| 亚洲桃色在线一区| 成人av手机在线观看| 亚洲va欧美va天堂v国产综合| 99re热视频这里只精品| 亚洲国产精品精华液2区45| 久久99九九99精品| 日韩一区二区中文字幕| 亚洲二区在线观看| 欧美日韩国产美| 性欧美大战久久久久久久久| 欧美午夜精品理论片a级按摩| 亚洲香肠在线观看| 欧美日韩在线免费视频| 一区二区不卡在线播放| 欧美日韩三级视频| 日韩成人精品在线观看| 91精品国产91久久久久久一区二区| 亚洲午夜视频在线观看| 在线不卡a资源高清| 老司机一区二区| 久久奇米777| 成人动漫一区二区三区| 亚洲欧美在线观看| 欧美午夜寂寞影院| 日本欧美肥老太交大片| 精品国内二区三区| 成人av在线播放网址| 樱花影视一区二区| 69成人精品免费视频| 国产一区二区主播在线| 国产精品人妖ts系列视频| 色偷偷久久人人79超碰人人澡| 亚洲国产精品一区二区www| 日韩欧美一区在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 国产日韩欧美a| 91视频xxxx| 日本欧美在线看| 中文字幕在线不卡一区| 欧美日韩精品是欧美日韩精品| 极品销魂美女一区二区三区| 国产精品情趣视频| 在线成人av网站| 成人黄色片在线观看| 水蜜桃久久夜色精品一区的特点| 久久影院午夜片一区| 色综合av在线| 久久精品国产秦先生| 亚洲欧洲另类国产综合| 日韩欧美不卡在线观看视频| 风间由美一区二区三区在线观看 | 欧美一区欧美二区| www.久久久久久久久| 免费高清不卡av| 亚洲综合色丁香婷婷六月图片| 久久久久九九视频| 欧美久久久一区| 99久久精品国产导航| 精品一区二区综合| 亚洲超碰精品一区二区| 国产精品家庭影院| 欧美成va人片在线观看| 欧美三级日本三级少妇99| 成人涩涩免费视频| 久久国产免费看| 性做久久久久久免费观看| 亚洲私人黄色宅男| 国产三级欧美三级日产三级99 | 国产日韩欧美不卡在线| 欧美一级片免费看| 欧美日韩精品一区二区| 欧美婷婷六月丁香综合色| 99久久夜色精品国产网站| 国产乱子伦一区二区三区国色天香 | 欧美日韩成人综合在线一区二区| 成人性生交大片免费| 加勒比av一区二区| 免费久久99精品国产| 视频一区视频二区在线观看| 亚洲乱码国产乱码精品精的特点 | 国产一二精品视频| 韩国成人精品a∨在线观看| 日韩黄色免费电影| 天堂影院一区二区| 视频一区视频二区在线观看| 天堂av在线一区| 五月激情综合网| 日韩av二区在线播放| 日韩中文字幕一区二区三区| 亚洲国产一二三| 午夜成人在线视频| 日韩和欧美一区二区三区| 日韩va亚洲va欧美va久久| 日韩高清国产一区在线| 免费精品视频在线| 国产一区二区剧情av在线| 国产一区二区福利| 从欧美一区二区三区| 日韩女优av电影| 26uuu国产日韩综合| 久久精品亚洲麻豆av一区二区| 久久一留热品黄| 国产精品少妇自拍| 伊人色综合久久天天人手人婷| 亚洲大片精品永久免费| 日韩va欧美va亚洲va久久| 国内偷窥港台综合视频在线播放| 国产成a人亚洲精| 91视频在线观看免费| 欧美精品少妇一区二区三区| 欧美日本一道本| 国产亚洲成av人在线观看导航 | 欧美日韩另类一区| 精品国产91九色蝌蚪| 日韩美女视频一区二区| 午夜国产精品一区| 国产精品自拍一区| 在线观看视频一区二区欧美日韩| 日韩视频免费直播| 中文字幕中文字幕一区| 蜜臀久久久99精品久久久久久| 国产v综合v亚洲欧| 欧美日韩精品是欧美日韩精品| 久久这里只有精品6| 亚洲一区二区三区四区在线观看| 日日夜夜免费精品| eeuss鲁片一区二区三区在线看| 欧美性猛交xxxx黑人交| 久久精品水蜜桃av综合天堂| 亚洲777理论| jlzzjlzz国产精品久久| 欧美不卡一区二区三区| 一区二区三区精品| 高清不卡一区二区在线|