Nudeactressworld ¡ World ¡ Szh £ Szh ý Szh se Szh rhsearch Funymedoy u World Nsearchdsearchasearchte Szh N Funymedoy d Nudeactressworld a Naked t Funymedoy e Szh s Funymedoy sesearch Naked aksearchd Nudeactressworld hN Szh d Funymedoy act Funymedoy esearchs Funymedoy oplus28%20%CC%D6%C2%DB%C7%F8%20%B3%C9%C8%CBlsearch Szh 67.220.93.13osearchl Naked Naked World ue World csearchrs Nudeactressworld wor1d usearchywww.26742.come Szh osearch Naked searcha Naked e çsearche1335460920484_Rr World hsearch¡ñ Szh º

¡¡¡¡ÔÚµÚi²½ÖУ¬tiÊÇ4294967296*abs(sin(i))µÄÕûÊý²¿·Ö£¬iµÄµ¥Î»ÊÇ»¡¶È¡£(4294967296µÈÓÚ2µÄ32´Î·½)

¡¡¡¡ËùÓÐÕâЩÍê³ÉÖ®ºó£¬½«A¡¢B¡¢C¡¢D·Ö±ð¼ÓÉÏa¡¢b¡¢c¡¢d¡£È»ºóÓÃÏÂÒ»·Ö×éÊý¾Ý¼ÌÐøÔËÐÐËã·¨£¬×îºóµÄÊä³öÊÇA¡¢B¡¢CºÍDµÄ¼¶Áª¡£

¡¡¡¡µ±Äã°´ÕÕÎÒÉÏÃæËù˵µÄ·½·¨ÊµÏÖMD5Ëã·¨ÒÔºó£¬Äã¿ÉÒÔÓÃÒÔϼ¸¸öÐÅÏ¢¶ÔÄã×ö³öÀ´µÄ³ÌÐò×÷Ò»¸ö¼òµ¥µÄ²âÊÔ£¬¿´¿´³ÌÐòÓÐûÓдíÎó¡£

¡¡¡¡MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

¡¡¡¡MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661

¡¡¡¡MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72

¡¡¡¡MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0

¡¡¡¡MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b

¡¡¡¡MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =

¡¡¡¡d174ab98d277d9f5a5611c2c9f419d9f

 

Md5Ëã·¨µÄÒ»¸öCÓïÑÔʵÏÖ£º

¡¡¡¡/*

¡¡¡¡* md5 -- compute and check MD5 message digest.

¡¡¡¡* this version only can calculate the char string.

¡¡¡¡*

¡¡¡¡* MD5 (Message-Digest algorithm 5) is a widely used, partially

¡¡¡¡* insecure cryptographic hash function with a 128-bit hash value.

¡¡¡¡*

¡¡¡¡* Author: redraiment

¡¡¡¡* Date: Aug 27, 2008

¡¡¡¡* Version: 0.1.6

¡¡¡¡*/

¡¡¡¡#include <stdlib.h>

¡¡¡¡#include <string.h>

¡¡¡¡#include <stdio.h>

¡¡¡¡#include <math.h>

¡¡¡¡#define SINGLE_ONE_BIT 0x80

¡¡¡¡#define BLOCK_SIZE 512

¡¡¡¡#define MOD_SIZE 448

¡¡¡¡#define APP_SIZE 64

¡¡¡¡#define BITS 8

¡¡¡¡// MD5 Chaining Variable

¡¡¡¡#define A 0x67452301UL

¡¡¡¡#define B 0xEFCDAB89UL

¡¡¡¡#define C 0x98BADCFEUL

¡¡¡¡#define D 0x10325476UL

¡¡¡¡// Creating own types

¡¡¡¡#ifdef UINT64

¡¡¡¡# undef UINT64

¡¡¡¡#endif

¡¡¡¡#ifdef UINT32

¡¡¡¡# undef UINT32

¡¡¡¡#endif

¡¡¡¡typedef unsigned long long UINT64;

¡¡¡¡typedef unsigned long UINT32;

¡¡¡¡typedef unsigned char UINT8;

¡¡¡¡typedef struct

¡¡¡¡{}STRING;

¡¡¡¡const UINT32 X[4][2] = {}, {}, {}, {}};

¡¡¡¡// Constants for MD5 transform routine.

¡¡¡¡const UINT32 S[4][4] = {},

¡¡¡¡{},

¡¡¡¡{},

¡¡¡¡{}

¡¡¡¡};

¡¡¡¡// F, G, H and I are basic MD5 functions.

¡¡¡¡UINT32 F( UINT32 X, UINT32 Y, UINT32 Z )

¡¡¡¡{}

¡¡¡¡UINT32 G( UINT32 X, UINT32 Y, UINT32 Z )

¡¡¡¡{}

¡¡¡¡UINT32 H( UINT32 X, UINT32 Y, UINT32 Z )

¡¡¡¡{}

¡¡¡¡UINT32 I( UINT32 X, UINT32 Y, UINT32 Z )

¡¡¡¡{}

¡¡¡¡// rotates x left s bits.

¡¡¡¡UINT32 rotate_left( UINT32 x, UINT32 s )

¡¡¡¡{}

¡¡¡¡// Pre-processin

¡¡¡¡UINT32 count_padding_bits ( UINT32 length )

¡¡¡¡{}

¡¡¡¡STRING append_padding_bits ( char * argv )

¡¡¡¡{}

¡¡¡¡int main ( int argc, char *argv[] )

¡¡¡¡{};

¡¡¡¡int roundIdx;

¡¡¡¡int argIdx;

¡¡¡¡int sIdx;

¡¡¡¡int wIdx;

¡¡¡¡int i;

¡¡¡¡int j;

¡¡¡¡if ( argc < 2 )

¡¡¡¡{}

¡¡¡¡for ( argIdx = 1; argIdx < argc; argIdx++ )

¡¡¡¡{}

¡¡¡¡}

¡¡¡¡chain[ 0 ] += state[ 0 ];

¡¡¡¡chain[ 1 ] += state[ 1 ];

¡¡¡¡chain[ 2 ] += state[ 2 ];

¡¡¡¡chain[ 3 ] += state[ 3 ];

¡¡¡¡}

¡¡¡¡memmove ( r + 0, (char *)&chain[0], sizeof(UINT32) );

¡¡¡¡memmove ( r + 4, (char *)&chain[1], sizeof(UINT32) );

¡¡¡¡memmove ( r + 8, (char *)&chain[2], sizeof(UINT32) );

¡¡¡¡memmove ( r + 12, (char *)&chain[3], sizeof(UINT32) );

¡¡¡¡for ( i = 0; i < 16; i++ )

¡¡¡¡printf ( "%02x", r[i] );

¡¡¡¡putchar ( '\n' );

¡¡¡¡}

¡¡¡¡return EXIT_SUCCESS;

¡¡¡¡}

¡¡¡¡/* ÒÔÉϳÌÐò¿ÉÒÔÔÚÈÎÒâÒ»¿îÖ§³ÖANSI CµÄ±àÒëÆ÷ÉϱàÒëͨ¹ý */

 

  ÆÀÂÛÕâÕÅ
ת·¢ÖÁ΢²©
ת·¢ÖÁ΢²©
0ÈË   ·ÖÏíµ½£º        
ÔĶÁ(590)| ÆÀÂÛ(0)| ÒýÓà (0) |¾Ù±¨
 
 
ÈÕ־ģ°å¸üÐÂÁË
 
C++¿âº¯Êýѧϰ£¨Mr.¹¨£©

ÀúÊ·ÉϵĽñÌì

Ïà¹ØÎÄÕÂ

×î½ü¶ÁÕß

ÆÀÂÛ

<#--×îÐÂÈÕÖ¾£¬Èº²©ÈÕÖ¾--> <#--ÍÆ¼öÈÕÖ¾--> <#--ÒýÓüǼ--> <#--²©Ö÷ÍÆ¼ö--> <#--Ëæ»úÔĶÁ--> <#--Ê×Ò³ÍÆ¼ö--> <#--Ïà¹ØÎÄÕÂ--> <#--ÀúÊ·ÉϵĽñÌì--> <#--ÓÒ±ßÄ£¿é½á¹¹--> <#--ÒýÓÃÄ£¿é½á¹¹--> <#--²©Ö÷·¢ÆðµÄͶƱ-->