NX 1.0.3
niu2x's base c++ helper library
载入中...
搜索中...
未找到
digest.h
浏览该文件的文档.
1#pragma once
2
3#include <nx/type.h>
4
8namespace nx::digest {
9
21class NX_API MD5 {
22public:
23 MD5();
24
28 void reset();
29
36 void update(const uint8_t* input, uint32_t length);
37
43 void finish(uint8_t digest[16]);
44
45private:
46 struct MD5_Context {
47 uint32_t total[2];
48 uint32_t state[4];
49 uint8_t buffer[64];
50 };
51
52 MD5_Context context_;
53
54 static void md5_update(MD5_Context* ctx,
55 const uint8_t* input,
56 uint32_t length);
57 static void md5_finish(MD5_Context* ctx, uint8_t digest[16]);
58 static void md5_process(MD5_Context* ctx, const uint8_t data[64]);
59 static void md5_starts(MD5_Context* ctx);
60};
61
73class NX_API CRC32 {
74public:
76
83 void update(const uint8_t* buf, size_t len);
84
90 uint32_t get_value() const;
91
92private:
93 uint32_t table_[256];
94 uint32_t initial_;
95};
96
97class NX_API SHA256 {
98public:
100
104 void reset();
105
112 void update(const uint8_t* input, uint32_t length);
113
119 void finish(uint8_t digest[32]);
120
122 uint8_t buf[64];
123 uint32_t hash[8];
124 uint32_t bits[2];
125 uint32_t len;
126 uint32_t rfu__;
127 uint32_t W[64];
128 };
129
130private:
131 SHA256_Context context_;
132 static void sha256_init(SHA256_Context* ctx);
133 static void sha256_hash(SHA256_Context* ctx, const void* data, size_t len);
134 static void sha256_done(SHA256_Context* ctx, uint8_t* hash);
135 // void sha256(const void *data, size_t len, uint8_t *hash);
136};
137
138NX_API String md5(const uint8_t* data, size_t len);
139NX_API String md5(const char* data);
140
141NX_API String sha256(const uint8_t* data, size_t len);
142NX_API String sha256(const char* data);
143
144NX_API uint32_t crc32(const uint8_t* data, size_t len);
145NX_API uint32_t crc32(const char* data);
146
147} // namespace nx::digest
This class NX_API describes crc 32 algorithm.
Definition digest.h:73
uint32_t get_value() const
get crc32 value
void update(const uint8_t *buf, size_t len)
put data
MD5 algorithm
Definition digest.h:21
void finish(uint8_t digest[16])
get md5
void reset()
Resets the object.
void update(const uint8_t *input, uint32_t length)
append more data to calculate md5
Definition digest.h:97
void reset()
Resets the object.
void finish(uint8_t digest[32])
get md5
void update(const uint8_t *input, uint32_t length)
append more data to calculate md5
digest namespace
Definition digest.h:8
NX_API String sha256(const uint8_t *data, size_t len)
NX_API String md5(const uint8_t *data, size_t len)
NX_API uint32_t crc32(const uint8_t *data, size_t len)
std::string String
Definition type.h:52
Definition digest.h:121
uint32_t rfu__
Definition digest.h:126
uint32_t len
Definition digest.h:125