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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sha-1.cpp

?? SHA-1 Source Code This optimized SHA-1 implementation conforms to FIPS 180-1
?? CPP
字號(hào):
#ifndef _SHA1_H
#define _SHA1_H

#define uint8  unsigned char
#define uint32 unsigned long int

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

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

#endif /* sha1.h */

sha1.c 


/*
 * FIPS 180-1 compliant SHA-1 implementation,
 * by Christophe Devine <devine@cr0.net>;
 * this program is licensed under the GPL.
 */

#include <string.h>
#include "sha1.h"

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

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

void sha1_starts( struct 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( struct sha1_context *ctx, uint8 data[64] )
{
    uint32 temp, A, B, C, D, E, W[16];

    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( struct sha1_context *ctx, uint8 *input, uint32 length )
{
    uint32 left, fill;

    if( ! length ) return;

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

    ctx->total[0] += length <<  3;
    ctx->total[1] += length >> 29;

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

    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( struct sha1_context *ctx, uint8 digest[16] )
{
    uint32 last, padn;
    uint8 msglen[8];

    PUT_UINT32( ctx->total[1], msglen, 0 );
    PUT_UINT32( ctx->total[0], msglen, 4 );

    last = ( ctx->total[0] >> 3 ) & 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 );
}

#ifdef TEST

#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( void )
{
    int i, j;
    char output[41], *buf;
    struct sha1_context ctx;
    unsigned char sha1sum[20];

    for( i = 0; i < 3; i++ )
    {
        sha1_starts( &ctx );

        if( i < 2 )
        {
            sha1_update( &ctx, (uint8 *) msg[i], strlen( msg[i] ) );
        }
        else
        {
            if( ! ( buf = (char *) malloc( 1000 ) ) )
            {
                perror( "malloc" );
                return( 1 );
            }

            memset( buf, 'a', 1000 );

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

            free( buf );
        }

        sha1_finish( &ctx, sha1sum );

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

        printf( "test %d ", i + 1 );

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

    return( 0 );
}

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷国产v国产偷v亚洲高清| 国产精品久久一卡二卡| 日韩三级中文字幕| 国产日韩欧美麻豆| 亚洲国产岛国毛片在线| 一区二区三区在线看| 蜜臀av一区二区| 欧美群妇大交群中文字幕| 国产精品大尺度| 亚洲午夜久久久久久久久电影网| 国产成人综合在线观看| 久久综合精品国产一区二区三区 | 精品福利av导航| 精品少妇一区二区三区免费观看| 欧美日韩免费观看一区二区三区| 91麻豆国产香蕉久久精品| 一本久久综合亚洲鲁鲁五月天| 97久久精品人人做人人爽50路| 99久久精品国产毛片| 欧美三级电影在线看| 中文字幕精品三区| 久久成人免费电影| 日韩一区二区麻豆国产| 亚洲黄色小视频| 91在线视频在线| 国产精品私房写真福利视频| 精品一区二区三区在线播放视频| 一本到三区不卡视频| 国产午夜精品福利| 韩国午夜理伦三级不卡影院| 欧美老肥妇做.爰bbww视频| 综合激情网...| 色婷婷久久久久swag精品| 首页国产欧美日韩丝袜| 精品国产青草久久久久福利| 日韩视频免费观看高清完整版 | 国产精品私人影院| 国内精品自线一区二区三区视频| 日本一区二区三区免费乱视频| www.日本不卡| 免费看欧美女人艹b| 中文字幕一区二区在线观看| 国产精品污网站| 不卡的av中国片| 一区二区三区不卡视频| 26uuu精品一区二区三区四区在线| 亚洲大型综合色站| 欧美mv日韩mv国产网站| 国产老肥熟一区二区三区| 国产精品国产三级国产三级人妇| 国产高清在线精品| 亚洲日穴在线视频| 欧美蜜桃一区二区三区| 麻豆91免费看| 亚洲精品日日夜夜| 欧美成人免费网站| 91农村精品一区二区在线| 亚洲国产精品久久久久秋霞影院| 欧美一区二区三区在| 成人国产精品视频| 亚洲国产精品久久艾草纯爱 | 天天色 色综合| 久久久久久久久久看片| 性久久久久久久久| 国产精品毛片久久久久久| 欧美人动与zoxxxx乱| 91一区在线观看| 精品影院一区二区久久久| 夜夜精品视频一区二区| 久久你懂得1024| 精品国产亚洲在线| 欧美性高清videossexo| 成人性生交大片免费看视频在线 | 中文子幕无线码一区tr| 在线电影院国产精品| 91在线观看一区二区| 激情文学综合丁香| 精品中文字幕一区二区| 全部av―极品视觉盛宴亚洲| 亚洲一区二区三区四区在线免费观看 | 欧美tickling挠脚心丨vk| 欧美日韩国产电影| 在线精品亚洲一区二区不卡| 国产成都精品91一区二区三| 国模娜娜一区二区三区| 久久精品国产77777蜜臀| 老司机免费视频一区二区三区| 婷婷成人激情在线网| 美女视频黄免费的久久| 久久精品国产亚洲一区二区三区| 亚洲一区二区三区四区不卡| 91啪在线观看| 91蝌蚪国产九色| 欧美午夜一区二区三区免费大片| 欧美大片在线观看一区二区| 亚洲精品一区二区三区精华液| 日韩欧美另类在线| 国产精品女主播av| 亚洲一级在线观看| 国产在线播放一区三区四| 成人精品视频一区二区三区| 色视频一区二区| 日韩亚洲欧美在线观看| 国产欧美精品一区二区色综合| 亚洲美女视频在线| 国产综合一区二区| 欧美视频在线播放| 欧美国产精品一区二区| 午夜精品久久久| 99精品欧美一区二区三区小说| 欧美日韩中文字幕一区| 国产欧美日韩综合精品一区二区| 亚洲一区二区三区四区在线| 国产999精品久久久久久绿帽| 在线观看欧美精品| 国产精品视频你懂的| 午夜国产精品影院在线观看| 美脚の诱脚舐め脚责91 | 韩国女主播一区二区三区| 欧美三级日韩三级| 亚洲综合久久av| 99精品国产99久久久久久白柏| 精品福利一二区| 狠狠色丁香九九婷婷综合五月| 日韩一级完整毛片| 日本欧美加勒比视频| 欧美久久久久中文字幕| 亚洲小说欧美激情另类| 欧美在线制服丝袜| 一区二区在线观看免费| 91在线免费看| 亚洲综合999| 欧美一区二区在线视频| 久久精品国产秦先生| 日韩午夜小视频| 国产成人亚洲精品狼色在线| 亚洲国产精品传媒在线观看| 成人av在线电影| 一卡二卡欧美日韩| 日韩一区二区在线播放| 国产一区二区精品久久99| 国产欧美视频在线观看| 色偷偷88欧美精品久久久| 香蕉影视欧美成人| 国产亚洲欧美色| 日本精品免费观看高清观看| 午夜电影网一区| 日本亚洲一区二区| 91精品黄色片免费大全| 成人一区二区三区中文字幕| 性欧美大战久久久久久久久| 久久在线观看免费| 欧美挠脚心视频网站| 麻豆精品视频在线观看| 在线观看视频91| 免费的成人av| 天天av天天翘天天综合网| 国产精品天天摸av网| 日韩欧美在线影院| 欧美色综合天天久久综合精品| 久久99久久久久久久久久久| 一区二区欧美视频| 国产精品国产馆在线真实露脸| 日韩一区二区三区视频在线| 色香色香欲天天天影视综合网| 国产麻豆欧美日韩一区| 亚洲18女电影在线观看| 中文字幕在线免费不卡| 久久人人爽人人爽| 久久一日本道色综合| 欧美成人精品福利| 欧美成人性战久久| 亚洲精品一区在线观看| 中文字幕亚洲电影| 国产精品伦一区二区三级视频| www久久精品| 91麻豆精品国产91久久久资源速度| 色婷婷综合久色| 国产91丝袜在线观看| 国产超碰在线一区| 欧美福利视频一区| 欧美一区二区三区在线| 日韩精品一区二区三区视频播放| 欧美成人a∨高清免费观看| 日韩一区二区免费在线观看| 欧美精品一区二区三区四区| 久久伊99综合婷婷久久伊| 国产精品久久久久一区二区三区共| 国产精品乱码妇女bbbb| 一区二区三区.www| 免费成人av在线播放| 高清在线成人网| 91福利国产精品| 国产日产欧产精品推荐色| 亚洲另类色综合网站| 免费在线观看视频一区| 91高清视频在线| 国产日韩精品视频一区| 日韩福利电影在线| 色悠悠久久综合|