C++计算文件MD5值.docx

上传人:b****7 文档编号:26639527 上传时间:2023-06-21 格式:DOCX 页数:27 大小:23.14KB
下载 相关 举报
C++计算文件MD5值.docx_第1页
第1页 / 共27页
C++计算文件MD5值.docx_第2页
第2页 / 共27页
C++计算文件MD5值.docx_第3页
第3页 / 共27页
C++计算文件MD5值.docx_第4页
第4页 / 共27页
C++计算文件MD5值.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C++计算文件MD5值.docx

《C++计算文件MD5值.docx》由会员分享,可在线阅读,更多相关《C++计算文件MD5值.docx(27页珍藏版)》请在冰豆网上搜索。

C++计算文件MD5值.docx

C++计算文件MD5值

MD5ChecksumDefines.h

1.//Magic initialization constants  

2.#define MD5_INIT_STATE_0 0x67452301  

3.#define MD5_INIT_STATE_1 0xefcdab89  

4.#define MD5_INIT_STATE_2 0x98badcfe  

5.#define MD5_INIT_STATE_3 0x10325476  

6.  

7.//Constants for Transform routine.  

8.#define MD5_S11  7  

9.#define MD5_S12 12  

10.#define MD5_S13 17  

11.#define MD5_S14 22  

12.#define MD5_S21  5  

13.#define MD5_S22  9  

14.#define MD5_S23 14  

15.#define MD5_S24 20  

16.#define MD5_S31  4  

17.#define MD5_S32 11  

18.#define MD5_S33 16  

19.#define MD5_S34 23  

20.#define MD5_S41  6  

21.#define MD5_S42 10  

22.#define MD5_S43 15  

23.#define MD5_S44 21  

24.  

25.//Transformation Constants - Round 1  

26.#define MD5_T01  0xd76aa478 //Transformation Constant 1   

27.#define MD5_T02  0xe8c7b756 //Transformation Constant 2  

28.#define MD5_T03  0x242070db //Transformation Constant 3  

29.#define MD5_T04  0xc1bdceee //Transformation Constant 4  

30.#define MD5_T05  0xf57c0faf //Transformation Constant 5  

31.#define MD5_T06  0x4787c62a //Transformation Constant 6  

32.#define MD5_T07  0xa8304613 //Transformation Constant 7  

33.#define MD5_T08  0xfd469501 //Transformation Constant 8  

34.#define MD5_T09  0x698098d8 //Transformation Constant 9  

35.#define MD5_T10  0x8b44f7af //Transformation Constant 10  

36.#define MD5_T11  0xffff5bb1 //Transformation Constant 11  

37.#define MD5_T12  0x895cd7be //Transformation Constant 12  

38.#define MD5_T13  0x6b901122 //Transformation Constant 13  

39.#define MD5_T14  0xfd987193 //Transformation Constant 14  

40.#define MD5_T15  0xa679438e //Transformation Constant 15  

41.#define MD5_T16  0x49b40821 //Transformation Constant 16  

42.  

43.//Transformation Constants - Round 2  

44.#define MD5_T17  0xf61e2562 //Transformation Constant 17  

45.#define MD5_T18  0xc040b340 //Transformation Constant 18  

46.#define MD5_T19  0x265e5a51 //Transformation Constant 19  

47.#define MD5_T20  0xe9b6c7aa //Transformation Constant 20  

48.#define MD5_T21  0xd62f105d //Transformation Constant 21  

49.#define MD5_T22  0x02441453 //Transformation Constant 22  

50.#define MD5_T23  0xd8a1e681 //Transformation Constant 23  

51.#define MD5_T24  0xe7d3fbc8 //Transformation Constant 24  

52.#define MD5_T25  0x21e1cde6 //Transformation Constant 25  

53.#define MD5_T26  0xc33707d6 //Transformation Constant 26  

54.#define MD5_T27  0xf4d50d87 //Transformation Constant 27  

55.#define MD5_T28  0x455a14ed //Transformation Constant 28  

56.#define MD5_T29  0xa9e3e905 //Transformation Constant 29  

57.#define MD5_T30  0xfcefa3f8 //Transformation Constant 30  

58.#define MD5_T31  0x676f02d9 //Transformation Constant 31  

59.#define MD5_T32  0x8d2a4c8a //Transformation Constant 32  

60.  

61.//Transformation Constants - Round 3  

62.#define MD5_T33  0xfffa3942 //Transformation Constant 33  

63.#define MD5_T34  0x8771f681 //Transformation Constant 34  

64.#define MD5_T35  0x6d9d6122 //Transformation Constant 35  

65.#define MD5_T36  0xfde5380c //Transformation Constant 36  

66.#define MD5_T37  0xa4beea44 //Transformation Constant 37  

67.#define MD5_T38  0x4bdecfa9 //Transformation Constant 38  

68.#define MD5_T39  0xf6bb4b60 //Transformation Constant 39  

69.#define MD5_T40  0xbebfbc70 //Transformation Constant 40  

70.#define MD5_T41  0x289b7ec6 //Transformation Constant 41  

71.#define MD5_T42  0xeaa127fa //Transformation Constant 42  

72.#define MD5_T43  0xd4ef3085 //Transformation Constant 43  

73.#define MD5_T44  0x04881d05 //Transformation Constant 44  

74.#define MD5_T45  0xd9d4d039 //Transformation Constant 45  

75.#define MD5_T46  0xe6db99e5 //Transformation Constant 46  

76.#define MD5_T47  0x1fa27cf8 //Transformation Constant 47  

77.#define MD5_T48  0xc4ac5665 //Transformation Constant 48  

78.  

79.//Transformation Constants - Round 4  

80.#define MD5_T49  0xf4292244 //Transformation Constant 49  

81.#define MD5_T50  0x432aff97 //Transformation Constant 50  

82.#define MD5_T51  0xab9423a7 //Transformation Constant 51  

83.#define MD5_T52  0xfc93a039 //Transformation Constant 52  

84.#define MD5_T53  0x655b59c3 //Transformation Constant 53  

85.#define MD5_T54  0x8f0ccc92 //Transformation Constant 54  

86.#define MD5_T55  0xffeff47d //Transformation Constant 55  

87.#define MD5_T56  0x85845dd1 //Transformation Constant 56  

88.#define MD5_T57  0x6fa87e4f //Transformation Constant 57  

89.#define MD5_T58  0xfe2ce6e0 //Transformation Constant 58  

90.#define MD5_T59  0xa3014314 //Transformation Constant 59  

91.#define MD5_T60  0x4e0811a1 //Transformation Constant 60  

92.#define MD5_T61  0xf7537e82 //Transformation Constant 61  

93.#define MD5_T62  0xbd3af235 //Transformation Constant 62  

94.#define MD5_T63  0x2ad7d2bb //Transformation Constant 63  

95.#define MD5_T64  0xeb86d391 //Transformation Constant 64  

96.  

97.  

98.//Null data (except for first BYTE) used to finalise the checksum calculation  

99.static unsigned char PADDING[64] = {  

100.  0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  

101.  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  

102.  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  

103.};  

CMD5Checksum.h

[cpp] viewplain copy

1.#if !

defined(AFX_MD5CHECKSUM_H__2BC7928E_4C15_11D3_B2EE_A4A60E20D2C3__INCLUDED_)  

2.#define AFX_MD5CHECKSUM_H__2BC7928E_4C15_11D3_B2EE_A4A60E20D2C3__INCLUDED_  

3.  

4.#if _MSC_VER > 1000  

5.#pragma once  

6.#endif // _MSC_VER > 1000  

7./***************************************************************************************** 

8. 

9.   

10.*****************************************************************************************/  

11.class CMD5Checksum    

12.{  

13.public:

  

14. static CString GetMD5OfString(CString strString);  

15. //interface functions for the RSA MD5 calculation  

16. static CString GetMD5(const CString& strFilePath);  

17.  

18.protected:

  

19. //constructor/destructor  

20. CMD5Checksum();  

21. virtual ~CMD5Checksum() {};  

22.  

23. //RSA MD5 implementation  

24. void Transform(BYTE Block[64]);  

25. void Update(BYTE* Input, ULONG nInputLen);  

26. CString Final();  

27. inline DWORD RotateLeft(DWORD x, int n);  

28. inline void FF( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T);  

29. inline void GG( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T);  

30. inline void HH( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T);  

31. inline void II( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T);  

32.  

33. //utility functions  

34. inline void DWordToByte(BYTE* Output, DWORD* Input, UINT nLength);  

35. inline void ByteToDWord(DWORD* Output, BYTE* Input, UINT nLength);  

36.  

37.private:

  

38. BYTE  m_lpszBuffer[64];  //input buffer  

39. ULONG m_nCount[2];   //number of bits, modulo 2^64 (lsb first)  

40. ULONG m_lMD5[4];   //MD5 checksum  

41.};  

42.  

43.#endif // !

defined(AFX_MD5CHECKSUM_H__2BC7928E_4C15_11D3_B2EE_A4A60E20D2C3__INCLUDED_)  

MD5Checksum.cpp

[cpp] viewplain copy

1.#include "stdafx.h"  

2.#include "MD5Checksum.h"  

3.#include "MD5ChecksumDefines.h"  

4.  

5.#ifdef _DEBUG  

6.#undef THIS_FILE  

7.static char THIS_FILE[]=__FILE__;  

8.#define new DEBUG_NEW  

9.#endif  

10.  

11.  

12./***************************************************************************************** 

13. 

14.*****************************************************************************************/  

15.CString CMD5Checksum:

:

GetMD5(const CString& strFilePath)  

16.{  

17.    try  

18.    {   

19.        CFile file;  

20.        if(file.Open(strFilePath,CFile:

:

modeRead)==0)  

21.            return _T("");  

22.  

23.        CMD5Checksum MD5Checksum;   //checksum object   

24.        int nLength = 0;       //number of bytes read from the file  

25.        const int nBufferSize = 1024; //checksum the file in blocks of 1024 bytes  

26.        BYTE Buffer[nBufferSize];   //buffer for data read from the file  

27.  

28.        //checksum the file in blocks of 1024 bytes  

29.        while ((nLength = file.Read( Buffer, nBufferSize )) > 0 )  

30.        {   

31.            MD5Checksum.Update( Buffer, nLength );  

32.        }  

33.  

34.        file.Close();  

35.  

36.        //finalise the checksum and return it  

37.        return MD5Checksum.Final();  

38.    }  

39.  

40.    //report any file exceptions in debug mode only  

41.    catch (CFileException* e )  

42.    {   

43.        TRACE0("CMD5Checksum:

:

GetMD5:

 CFileException caught");   

44.        throw e;  

45.    }  

46.}  

47.  

48./***************************************************************************************** 

49.FUNCTION:

  CMD5Checksum:

:

RotateLeft 

50.DETAILS:

  private 

51.DESCRIPTION:

 Rotates the bits in a 32 bit DWORD left by a specified amount 

52.RETURNS:

  The rotated DWORD  

53.ARGUMENTS:

  DWORD x :

 the value to be rotated 

54.int n   :

 the number of bits to rotate by 

55.*****************************************************************************************/  

56.DWORD CMD5Checksum:

:

RotateLeft(DWORD x, int n)  

57.{   

58.    //check that DWORD is 4 bytes long - true in Visual C++ 6 and 32 bit Windows  

59.    ASSERT( sizeof(x) == 4 );  

60.  

61.    //rotate and return x  

62.    return (x << n) | (x >> (32-n));  

63.}  

64.  

65.  

66./***************************************************************************************** 

67.FUNCTION:

  CMD5Checksum:

:

FF 

68.DETAILS:

  protected 

69.DESCRIPTION:

 Implementation of basic MD5 transformation algorithm 

70.RETURNS:

  none 

71.ARGUMENTS:

  DWORD &A, B, C, D :

 Current (partia

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1