|
1 | | -# GameFrameX.Foundation |
2 | | - |
3 | | -GameFrameX 的基建库, 提供了一些基础的扩展方法和工具类. |
4 | | - |
5 | | -## HTTP 消息结构标准化组件 (GameFrameX.Foundation.Http.Normalization) |
6 | | - |
7 | | -该组件提供了 HTTP 消息结构标准化的功能, 让消息的格式更加统一. |
8 | | - |
9 | | -服务器返回的消息包含 `code` 和 `message` 和 `data`, 但是客户端需要统一的返回格式, 需要进行格式化.所以这个组件提供了格式化的功能. 适用于GameFrameX 的整个生态标准 |
10 | | - |
11 | | -## 加密工具库 (GameFrameX.Foundation.Encryption) |
12 | | - |
13 | | -该库提供了多种加密算法的实现,包括: |
14 | | - |
15 | | -### AES 加密 (AesHelper) |
16 | | - |
17 | | -提供 AES 对称加密算法的实现: |
18 | | - |
19 | | -- 支持字符串和字节数组的加密/解密 |
20 | | -- 使用 Rijndael 算法作为 AES 标准的实现 |
21 | | -- 提供高安全级别的加密方案 |
22 | | - |
23 | | -### RSA 加密 (RsaHelper) |
24 | | - |
25 | | -提供 RSA 非对称加密算法的实现: |
26 | | - |
27 | | -- 支持密钥对生成 |
28 | | -- 支持公钥加密/私钥解密 |
29 | | -- 支持数字签名和验证 |
30 | | -- 支持字符串和字节数组操作 |
31 | | - |
32 | | -### DSA 签名 (DsaHelper) |
33 | | - |
34 | | -提供 DSA 数字签名算法的实现: |
35 | | - |
36 | | -- 支持密钥对生成 |
37 | | -- 支持数字签名和验证 |
38 | | -- 支持字符串和字节数组操作 |
39 | | - |
40 | | -### SM2/SM4 加密 (Sm2Helper/Sm4Helper) |
41 | | - |
42 | | -提供国密 SM2/SM4 算法的实现: |
43 | | - |
44 | | -- SM2: 非对称加密算法 |
45 | | - - 支持密钥对生成 |
46 | | - - 支持加密/解密操作 |
47 | | -- SM4: 对称加密算法 |
48 | | - - 支持 ECB/CBC 加密模式 |
49 | | - - 支持 JavaScript 兼容模式 |
50 | | - - 支持十六进制密钥 |
51 | | - |
52 | | -### XOR 加密 (XorHelper) |
53 | | - |
54 | | -提供异或加密算法的实现: |
55 | | - |
56 | | -- 支持快速加密模式(仅加密前220字节) |
57 | | -- 支持完整加密模式 |
58 | | -- 支持指定范围加密 |
59 | | -- 内存优化设计,支持原地加密 |
60 | | - |
61 | | -### 使用示例 |
62 | | - |
63 | | -```csharp |
64 | | -// AES 加密示例 |
65 | | -string encrypted = AesHelper.Encrypt("Hello World", "your-key"); |
66 | | -string decrypted = AesHelper.Decrypt(encrypted, "your-key"); |
67 | | -// RSA 加密示例 |
68 | | -var keys = RsaHelper.Make(); |
69 | | -string encrypted = RsaHelper.Encrypt(keys["publicKey"], "Hello World"); |
70 | | -string decrypted = RsaHelper.Decrypt(keys["privateKey"], encrypted); |
71 | | -// SM4 加密示例 |
72 | | -string encrypted = Sm4Helper.EncryptCbc("your-key", "Hello World"); |
73 | | -string decrypted = Sm4Helper.DecryptCbc("your-key", encrypted); |
74 | | -``` |
75 | | - |
76 | | -## 哈希工具库 (GameFrameX.Foundation.Hash) |
77 | | - |
78 | | -该库提供了多种哈希算法的实现,包括: |
79 | | - |
80 | | -### MD5 哈希 (Md5Helper) |
81 | | - |
82 | | -- 提供字符串、流、文件和字节数组的MD5哈希计算 |
83 | | -- 支持加盐哈希 |
84 | | -- 支持哈希值验证 |
85 | | -- 注:MD5已不再被认为是加密安全的,建议在安全要求较高的场景使用SHA-256或更高强度的算法 |
86 | | - |
87 | | -### SHA 系列哈希 |
88 | | - |
89 | | -- SHA-1 (Sha1Helper): 生成160位(20字节)哈希值 |
90 | | -- SHA-256 (Sha256Helper): 生成256位(32字节)哈希值 |
91 | | -- SHA-512 (Sha512Helper): 生成512位(64字节)哈希值 |
92 | | -- 支持字符串、字节数组和文件的哈希计算与验证 |
93 | | -- 支持自定义编码 |
94 | | - |
95 | | -### HMAC-SHA256 (HmacSha256Helper) |
96 | | - |
97 | | -- 基于密钥的哈希消息认证码 |
98 | | -- 结合SHA-256哈希函数和密钥 |
99 | | -- 返回Base64编码的哈希值 |
100 | | - |
101 | | -### CRC 校验 (CrcHelper) |
102 | | - |
103 | | -- CRC32: 32位循环冗余校验 |
104 | | -- CRC64: 64位循环冗余校验,基于ECMA-182标准 |
105 | | -- 支持流式处理 |
106 | | -- 支持字节数组和文件处理 |
107 | | - |
108 | | -### MurmurHash3 (MurmurHash3Helper) |
109 | | - |
110 | | -- 非加密型高性能哈希算法 |
111 | | -- 32位版本实现 |
112 | | -- 支持自定义种子值 |
113 | | -- 适用于哈希表等场景 |
114 | | - |
115 | | -### xxHash (XxHashHelper) |
116 | | - |
117 | | -- 提供32位、64位和128位哈希值计算 |
118 | | -- 高性能非加密型哈希算法 |
119 | | -- 支持字符串、字节数组和类型哈希 |
120 | | -- 适用于需要快速哈希计算的场景 |
121 | | - |
122 | | -### 使用示例 |
123 | | - |
124 | | -```csharp |
125 | | -// MD5哈希示例 |
126 | | -string md5Hash = Md5Helper.Hash("Hello World"); |
127 | | -string saltedHash = Md5Helper.HashWithSalt("Hello World", "salt"); |
128 | | -// SHA-256哈希示例 |
129 | | -string sha256Hash = Sha256Helper.ComputeHash("Hello World"); |
130 | | -// HMAC-SHA256示例 |
131 | | -string hmacHash = HmacSha256Helper.Hash("message", "key"); |
132 | | -// CRC32校验示例 |
133 | | -int crc32 = CrcHelper.GetCrc32("Hello World"u8.ToArray()); |
134 | | -// MurmurHash3示例 |
135 | | -uint murmurHash = MurmurHash3Helper.Hash("Hello World"); |
136 | | -// xxHash示例 |
137 | | -ulong xxHash = XxHashHelper.Hash64("Hello World"); |
138 | | -``` |
139 | | - |
140 | | -## JSON 序列化/反序列化 (GameFrameX.Foundation.Json) |
141 | | - |
142 | | -- 基于 System.Text.Json 的高性能序列化工具 |
143 | | -- 提供默认和格式化两种序列化配置: |
144 | | - - DefaultOptions: 紧凑输出,适合传输 |
145 | | - - FormatOptions: 格式化输出,适合调试 |
146 | | -- 特性支持: |
147 | | - - 枚举序列化为字符串 |
148 | | - - 忽略 null 值属性 |
149 | | - - 忽略循环引用 |
150 | | - - 属性名称大小写不敏感 |
151 | | -- 丰富的序列化/反序列化方法: |
152 | | - - 字符串序列化/反序列化 |
153 | | - - UTF8字节数组序列化/反序列化 |
154 | | - - 安全的Try方法 |
155 | | - - 支持泛型和非泛型API |
156 | | - |
157 | | -### 使用示例 |
158 | | - |
159 | | -```csharp |
160 | | -// 序列化示例 |
161 | | -string json = JsonHelper.Serialize(myObject); |
162 | | -// 反序列化示例 |
163 | | -MyClass deserializedObject = JsonHelper.Deserialize<MyClass>(json); |
164 | | -``` |
165 | | - |
166 | | -## HttpClient 扩展 (GameFrameX.Foundation.Http.Extension) |
167 | | - |
168 | | -- 提供 HttpClient 的扩展方法,用于发送JSON请求和处理JSON响应 |
169 | | -- 支持POST请求,将JSON数据序列化后发送,并将响应内容读取为字符串 |
170 | | -- 支持自定义请求头和超时时间 |
171 | | -- 支持泛型和非泛型API |
172 | | - |
173 | | -### 使用示例 |
174 | | - |
175 | | -```csharp |
176 | | -// POST请求示例 |
177 | | -string response = await httpClient.PostJsonToStringAsync<MyClass>(url, myObject); |
178 | | -``` |
| 1 | +# GameFrameX.Foundation |
| 2 | + |
| 3 | +GameFrameX 的基建库, 提供了一些基础的扩展方法和工具类. |
| 4 | + |
| 5 | +## HTTP 消息结构标准化组件 (GameFrameX.Foundation.Http.Normalization) |
| 6 | + |
| 7 | +该组件提供了 HTTP 消息结构标准化的功能, 让消息的格式更加统一. |
| 8 | + |
| 9 | +服务器返回的消息包含 `code` 和 `message` 和 `data`, 但是客户端需要统一的返回格式, 需要进行格式化.所以这个组件提供了格式化的功能. 适用于GameFrameX 的整个生态标准 |
| 10 | + |
| 11 | +## 加密工具库 (GameFrameX.Foundation.Encryption) |
| 12 | + |
| 13 | +该库提供了多种加密算法的实现,包括: |
| 14 | + |
| 15 | +### AES 加密 (AesHelper) |
| 16 | + |
| 17 | +提供 AES 对称加密算法的实现: |
| 18 | + |
| 19 | +- 支持字符串和字节数组的加密/解密 |
| 20 | +- 使用 Rijndael 算法作为 AES 标准的实现 |
| 21 | +- 提供高安全级别的加密方案 |
| 22 | + |
| 23 | +### RSA 加密 (RsaHelper) |
| 24 | + |
| 25 | +提供 RSA 非对称加密算法的实现: |
| 26 | + |
| 27 | +- 支持密钥对生成 |
| 28 | +- 支持公钥加密/私钥解密 |
| 29 | +- 支持数字签名和验证 |
| 30 | +- 支持字符串和字节数组操作 |
| 31 | + |
| 32 | +### DSA 签名 (DsaHelper) |
| 33 | + |
| 34 | +提供 DSA 数字签名算法的实现: |
| 35 | + |
| 36 | +- 支持密钥对生成 |
| 37 | +- 支持数字签名和验证 |
| 38 | +- 支持字符串和字节数组操作 |
| 39 | + |
| 40 | +### SM2/SM4 加密 (Sm2Helper/Sm4Helper) |
| 41 | + |
| 42 | +提供国密 SM2/SM4 算法的实现: |
| 43 | + |
| 44 | +- SM2: 非对称加密算法 |
| 45 | + - 支持密钥对生成 |
| 46 | + - 支持加密/解密操作 |
| 47 | +- SM4: 对称加密算法 |
| 48 | + - 支持 ECB/CBC 加密模式 |
| 49 | + - 支持 JavaScript 兼容模式 |
| 50 | + - 支持十六进制密钥 |
| 51 | + |
| 52 | +### XOR 加密 (XorHelper) |
| 53 | + |
| 54 | +提供异或加密算法的实现: |
| 55 | + |
| 56 | +- 支持快速加密模式(仅加密前220字节) |
| 57 | +- 支持完整加密模式 |
| 58 | +- 支持指定范围加密 |
| 59 | +- 内存优化设计,支持原地加密 |
| 60 | + |
| 61 | +### 使用示例 |
| 62 | + |
| 63 | +```csharp |
| 64 | +// AES 加密示例 |
| 65 | +string encrypted = AesHelper.Encrypt("Hello World", "your-key"); |
| 66 | +string decrypted = AesHelper.Decrypt(encrypted, "your-key"); |
| 67 | +// RSA 加密示例 |
| 68 | +var keys = RsaHelper.Make(); |
| 69 | +string encrypted = RsaHelper.Encrypt(keys["publicKey"], "Hello World"); |
| 70 | +string decrypted = RsaHelper.Decrypt(keys["privateKey"], encrypted); |
| 71 | +// SM4 加密示例 |
| 72 | +string encrypted = Sm4Helper.EncryptCbc("your-key", "Hello World"); |
| 73 | +string decrypted = Sm4Helper.DecryptCbc("your-key", encrypted); |
| 74 | +``` |
| 75 | + |
| 76 | +## 哈希工具库 (GameFrameX.Foundation.Hash) |
| 77 | + |
| 78 | +该库提供了多种哈希算法的实现,包括: |
| 79 | + |
| 80 | +### MD5 哈希 (Md5Helper) |
| 81 | + |
| 82 | +- 提供字符串、流、文件和字节数组的MD5哈希计算 |
| 83 | +- 支持加盐哈希 |
| 84 | +- 支持哈希值验证 |
| 85 | +- 注:MD5已不再被认为是加密安全的,建议在安全要求较高的场景使用SHA-256或更高强度的算法 |
| 86 | + |
| 87 | +### SHA 系列哈希 |
| 88 | + |
| 89 | +- SHA-1 (Sha1Helper): 生成160位(20字节)哈希值 |
| 90 | +- SHA-256 (Sha256Helper): 生成256位(32字节)哈希值 |
| 91 | +- SHA-512 (Sha512Helper): 生成512位(64字节)哈希值 |
| 92 | +- 支持字符串、字节数组和文件的哈希计算与验证 |
| 93 | +- 支持自定义编码 |
| 94 | + |
| 95 | +### HMAC-SHA256 (HmacSha256Helper) |
| 96 | + |
| 97 | +- 基于密钥的哈希消息认证码 |
| 98 | +- 结合SHA-256哈希函数和密钥 |
| 99 | +- 返回Base64编码的哈希值 |
| 100 | + |
| 101 | +### CRC 校验 (CrcHelper) |
| 102 | + |
| 103 | +- CRC32: 32位循环冗余校验 |
| 104 | +- CRC64: 64位循环冗余校验,基于ECMA-182标准 |
| 105 | +- 支持流式处理 |
| 106 | +- 支持字节数组和文件处理 |
| 107 | + |
| 108 | +### MurmurHash3 (MurmurHash3Helper) |
| 109 | + |
| 110 | +- 非加密型高性能哈希算法 |
| 111 | +- 32位版本实现 |
| 112 | +- 支持自定义种子值 |
| 113 | +- 适用于哈希表等场景 |
| 114 | + |
| 115 | +### xxHash (XxHashHelper) |
| 116 | + |
| 117 | +- 提供32位、64位和128位哈希值计算 |
| 118 | +- 高性能非加密型哈希算法 |
| 119 | +- 支持字符串、字节数组和类型哈希 |
| 120 | +- 适用于需要快速哈希计算的场景 |
| 121 | + |
| 122 | +### 使用示例 |
| 123 | + |
| 124 | +```csharp |
| 125 | +// MD5哈希示例 |
| 126 | +string md5Hash = Md5Helper.Hash("Hello World"); |
| 127 | +string saltedHash = Md5Helper.HashWithSalt("Hello World", "salt"); |
| 128 | +// SHA-256哈希示例 |
| 129 | +string sha256Hash = Sha256Helper.ComputeHash("Hello World"); |
| 130 | +// HMAC-SHA256示例 |
| 131 | +string hmacHash = HmacSha256Helper.Hash("message", "key"); |
| 132 | +// CRC32校验示例 |
| 133 | +int crc32 = CrcHelper.GetCrc32("Hello World"u8.ToArray()); |
| 134 | +// MurmurHash3示例 |
| 135 | +uint murmurHash = MurmurHash3Helper.Hash("Hello World"); |
| 136 | +// xxHash示例 |
| 137 | +ulong xxHash = XxHashHelper.Hash64("Hello World"); |
| 138 | +``` |
| 139 | + |
| 140 | +## JSON 序列化/反序列化 (GameFrameX.Foundation.Json) |
| 141 | + |
| 142 | +- 基于 System.Text.Json 的高性能序列化工具 |
| 143 | +- 提供默认和格式化两种序列化配置: |
| 144 | + - DefaultOptions: 紧凑输出,适合传输 |
| 145 | + - FormatOptions: 格式化输出,适合调试 |
| 146 | +- 特性支持: |
| 147 | + - 枚举序列化为字符串 |
| 148 | + - 忽略 null 值属性 |
| 149 | + - 忽略循环引用 |
| 150 | + - 属性名称大小写不敏感 |
| 151 | +- 丰富的序列化/反序列化方法: |
| 152 | + - 字符串序列化/反序列化 |
| 153 | + - UTF8字节数组序列化/反序列化 |
| 154 | + - 安全的Try方法 |
| 155 | + - 支持泛型和非泛型API |
| 156 | + |
| 157 | +### 使用示例 |
| 158 | + |
| 159 | +```csharp |
| 160 | +// 序列化示例 |
| 161 | +string json = JsonHelper.Serialize(myObject); |
| 162 | +// 反序列化示例 |
| 163 | +MyClass deserializedObject = JsonHelper.Deserialize<MyClass>(json); |
| 164 | +``` |
| 165 | + |
| 166 | +## HttpClient 扩展 (GameFrameX.Foundation.Http.Extension) |
| 167 | + |
| 168 | +- 提供 HttpClient 的扩展方法,用于发送JSON请求和处理JSON响应 |
| 169 | +- 支持POST请求,将JSON数据序列化后发送,并将响应内容读取为字符串 |
| 170 | +- 支持自定义请求头和超时时间 |
| 171 | +- 支持泛型和非泛型API |
| 172 | + |
| 173 | +### 使用示例 |
| 174 | + |
| 175 | +```csharp |
| 176 | +// POST请求示例 |
| 177 | +string response = await httpClient.PostJsonToStringAsync<MyClass>(url, myObject); |
| 178 | +``` |
| 179 | + |
| 180 | +## Serilog 日志配置 (GameFrameX.Foundation.Logger) |
| 181 | + |
| 182 | +- 提供 Serilog 的扩展方法,用于配置日志输出 |
| 183 | +- 支持常用参数配置,如日志级别、输出路径、序列化格式等 |
| 184 | +- 支持自定义外部日志提供程序 |
| 185 | +- 提供常用的日志记录函数,如 Debug、Information、Warning、Error |
| 186 | +- 提供日志的自我诊断输出 |
| 187 | + |
| 188 | +### 使用示例 |
| 189 | + |
| 190 | +```csharp |
| 191 | +// 默认配置 |
| 192 | +LogHandler.Create(LogOptions.Default); |
| 193 | +// 日志打印 |
| 194 | +LogHelper.Info("Hello World"); |
| 195 | +``` |
| 196 | + |
0 commit comments