@@ -11,263 +11,71 @@ public static class WebCrypto
11
11
{
12
12
public static readonly byte [ ] AuthIV = new byte [ ] { 0x30 , 0x57 , 0xB5 , 0x1F , 0x32 , 0xD4 , 0xAD , 0xBF , 0xAA , 0xAA , 0x21 , 0x41 , 0x6C , 0xDC , 0x5D , 0xF5 } ;
13
13
14
- private static readonly float [ ] ChecksumFloatBox = new float [ ] {
15
- 58008202f ,
16
- 283586167f ,
17
- 691630987f ,
18
- 0.0121423f ,
19
- 24496404f ,
20
- 100693.8f ,
21
- 11111.00f ,
22
- 33743066f ,
23
- 11161060f ,
24
- 22.609399f ,
25
- 8.0000000f ,
26
- 656079619f ,
27
- 0.0001639f ,
28
- 254526166f ,
29
- 738776787f ,
30
- 455288633f ,
31
- 0.0000000f ,
32
- float . MinValue ,
33
- float . MaxValue ,
34
- 9.9999999f ,
35
- - 66916347f ,
36
- 8.001010f ,
37
- 24885909f ,
38
- 0.0335716f ,
39
- 345748357f ,
40
- 44845496f ,
41
- 217480376f ,
42
- 13121294f ,
43
- 158692601f ,
44
- 32197227f ,
45
- 564358.0f ,
46
- 0.000000f ,
47
- 25984833f ,
48
- float . MaxValue ,
49
- 0.000000f ,
50
- 306495034f ,
51
- 0.0000000f ,
52
- - 0.0000000f ,
53
- 0.0000003f ,
54
- - 685.0607f ,
55
- 236381221f ,
56
- 0.0000000f ,
57
- 48180597f ,
58
- 45155118f ,
59
- 1976.2049f ,
60
- - 19991440f ,
61
- - 14114456f ,
62
- 0.000004f ,
63
- 0.0000000f ,
64
- 45522309f ,
65
- 2.000000f ,
66
- 154946698f ,
67
- - 1.0000009f ,
68
- 63222279f ,
69
- - 65.03404f ,
70
- 3.0000000f ,
71
- - 1.299990f ,
72
- 0.000000f ,
73
- 85.476051f ,
74
- 48973531f ,
75
- 37662912f ,
76
- - 0.000000f ,
77
- - 19991.000f ,
78
- 307838413f ,
79
- 904143232f ,
80
- - 107104265f ,
81
- 213395580f ,
82
- 0.000000f ,
83
- 0.0000000f ,
84
- 18.33077f ,
85
- 0.0000000f ,
86
- 57067016f ,
87
- 14917448f ,
88
- 432.62677f ,
89
- 99999999f ,
90
- 0.000887f ,
91
- - 389197792f ,
92
- 0.0000000f ,
93
- 52872964f ,
94
- 0.8713466f ,
95
- 363465965f ,
96
- 999999990f ,
97
- - 0.000000f ,
98
- 49137600f ,
99
- 73203757f ,
100
- 0.000000f ,
101
- 99984.100f ,
102
- - 530440842f ,
103
- 0.0000000f ,
104
- 1.1807239f ,
105
- 2584606.7f ,
106
- 0.000000f ,
107
- 0.000000f ,
108
- 0.0000000f ,
109
- 3383709.5f ,
110
- 3.278632f ,
111
- 0.000000f ,
112
- 0.000000f ,
113
- 455318494f ,
114
- - 91443337f ,
115
- float . MaxValue ,
116
- 778152399f ,
117
- 0.0000000f ,
118
- 234353870f ,
119
- 0.0009164f ,
120
- 1119.0000f ,
121
- 150841736f ,
122
- 9.0880000f ,
123
- 155608066f ,
124
- 1.5884156f ,
125
- 113359872f ,
126
- 0.000000f ,
127
- float . MaxValue ,
128
- - 0.0000000f ,
129
- 99956886f ,
130
- 99.000000f ,
131
- 111.00000f ,
132
- 337012321f ,
133
- 12136144f ,
134
- 4.783637f ,
135
- 106917.5f ,
136
- 6.6644000f ,
137
- 806013785f ,
138
- 16321673f ,
139
- 14066396f ,
140
- 35364254f ,
141
- 38071700f ,
142
- - 411691540f ,
143
- 0.025415f ,
144
- 31909135f ,
145
- 13653414f ,
146
- 9.1100000f ,
147
- 574320387f ,
148
- - 28599966f ,
149
- 2.0403958f ,
150
- 736205017f ,
151
- 10.646077f ,
152
- 0.0004768f ,
153
- 12589274f ,
154
- 92538261f ,
155
- 0.6502635f ,
156
- - 281029210f ,
157
- 0.0000000f ,
158
- 0.000000f ,
159
- 27956324f ,
160
- 129829580f ,
161
- 0.0000000f ,
162
- 81660997f ,
163
- 534194995f ,
164
- 192919466f ,
165
- 367647210f ,
166
- 0.55555555f ,
167
- - 620646330f ,
168
- 520537602f ,
169
- 164146190f ,
170
- 87026353f ,
171
- 810672770f ,
172
- 1.0000000f ,
173
- 0.0007157f ,
174
- 3.000000f ,
175
- 10973.481f ,
176
- 789490777f ,
177
- 0.000000f ,
178
- 0.0000122f ,
179
- 0.0000027f ,
180
- - 0.007104f ,
181
- 0.000000f ,
182
- 0.0000000f ,
183
- 704.64929f ,
184
- 13869565f ,
185
- - 8.000000f ,
186
- 42714203f ,
187
- 18517149f ,
188
- 0.000000f ,
189
- - 44077661f ,
190
- 0.000000f ,
191
- 56232092f ,
192
- 13171912f ,
193
- 321896641f ,
194
- 79.715774f ,
195
- 116500676f ,
196
- 33671630f ,
197
- 113833607f ,
198
- 0.000027f ,
199
- - 0.000490f ,
200
- 4926.680f ,
201
- 249628960f ,
202
- 24789044f ,
203
- 779834022f ,
204
- - 114004686f ,
205
- 11813414f ,
206
- 39849447f ,
207
- 331297423f ,
208
- 0.000000f ,
209
- 298826107f ,
210
- 4.4202899f ,
211
- - 0.4316006f ,
212
- 685650963f ,
213
- 0.000000f ,
214
- 114157306f ,
215
- - 387315200f ,
216
- 0.0000000f ,
217
- 288964480f ,
218
- 144.59900f ,
219
- 0.099100f ,
220
- 05614100f ,
221
- 0.0000001f ,
222
- 20511712f ,
223
- - 58915550f ,
224
- 19.84004f ,
225
- 0.0000000f ,
226
- 9.000000f ,
227
- 0.000000f ,
228
- 771425661f ,
229
- 0.000000f ,
230
- 1.0000000f ,
231
- 1317.196f ,
232
- 0.0000014f ,
233
- 15941265f ,
234
- 49330645f ,
235
- 218309042f ,
236
- 0.000000f ,
237
- 55.40400f ,
238
- 36322385f ,
239
- 0.0030822f ,
240
- float . MaxValue ,
241
- 0.000000f ,
242
- 948228673f ,
243
- - 0.000000f ,
244
- 49617375f ,
245
- 28899893f ,
246
- 799385305f ,
247
- 38902177f ,
248
- 525543053f ,
249
- 0.006318f ,
250
- 32261.566f ,
251
- 121926.03f ,
252
- 749418696f ,
253
- 147206035f ,
254
- 92048209f ,
255
- 268444598f ,
256
- 20088921f ,
257
- float . MinValue ,
258
- 20665186f ,
259
- 0.0000000f ,
260
- 26009441f ,
261
- 141566736f ,
262
- 0.0000966f ,
263
- - 0.0000000f ,
264
- 222.0000f ,
265
- - 99178045f ,
266
- 27448502f ,
267
- 0.000000f ,
268
- - 9984210f ,
269
- 0.0000000f ,
270
- 34751204f
14
+ private static readonly double [ ] ChecksumDoubleBox = new double [ ] {
15
+ 2.7887184390393327E-68 , - 1.8618331480548654E+44 , - 4.3020517462112105E-88 , 2.7690669394447383E-306 ,
16
+ - 4.4732610650720826E+186 , - 1.4390889935876456E-122 , 9.011151663372176E-162 , 4.2908917155383753E-218 ,
17
+ - 2.4128387770212816E-68 , - 2.302277439516697E+17 , - 1.42652914942737E+76 , - 5.8837740751567983E+133 ,
18
+ 1.5920040750264217E+296 , 1.0396241970410689E+80 , - 4.5251989463276728E-37 , - 99908801504.216187 ,
19
+ - 9.6938069800013986E-234 , 7154320198.8792391 , 3.3350146220305454 , 4.5992494633926639E+296 ,
20
+ 0.00015538478019864411 , - 2.3770471563162649E-231 , - 3.7776792306925663E-257 , - 3.2751772927936956E-79 ,
21
+ 2.9753036182759686E+19 , - 3.4108151155201765E-97 , 1.8254489178010996E-150 , - 1.533309463713607E+223 ,
22
+ - 3.3038829395282477E-163 , - 3.5867627522725082E-44 , - 8.0575990854406417E+228 , - 4.5693368234658098E+218 ,
23
+ 1.5758545622916187E+250 , - 3.8469203628037247E+75 , - 7.7468478373878765E+283 , 2.9070685939131584E-109 ,
24
+ 6.3703271911431292E-267 , 3221.4418522251376 , 5.4205212587320372E+146 , - 8.0205306949294802E+33 ,
25
+ - 9.4975431916177958E-136 , 3.667794057662362E-115 , 7.7199257831233639E-151 , - 2.1070369526203118E+101 ,
26
+ 1.6411659940921769E-155 , - 3.6168969623686786E-163 , 2.1579389902107392E-277 , 4.874590773217776E-111 ,
27
+ 4.0857360992391282E-165 , 1.0606435456003952E+267 , 5.7931290514683669E-152 , - 6.7290098482703866E+52 ,
28
+ 1.2606024827897781E+296 , - 1.6704953006900546E-176 , - 3.0078722972120132E+48 , 3.1447104851678525E+301 ,
29
+ 1915.2152581197442 , 3.3184196363573966E+181 , 6.1149917535759973E-276 , 5.4064678119532772E-23 ,
30
+ - 1.0984738414178737E-88 , 6.1990027968293353E-291 , 3.4566479109573149E-196 , - 5.3509295815048191E-26 ,
31
+ 1.6505428070349743E+277 , - 9.6811524958504798E+67 , 1.1280023390074459E+149 , - 4.9292339788735822E-68 ,
32
+ 2.2601210796010041E+178 , 8.5226517645726473E+190 , - 1.0017171101609985E-279 , - 3.65646314408369E-50 ,
33
+ 2.2970458601470527E+32 , 1.0565926139826181E+120 , - 1.2064366402132023E-257 , - 2.9763571200300399E-212 ,
34
+ 7.4113698535820762E+30 , 4.8640419208754734E-102 , 10521018956905.494 , 2.4526076739600515E-218 ,
35
+ - 1.5830022524963814E-73 , 3.4336565057851734E+189 , - 2.3577655252445132E-156 , - 9.8917585013646492E-214 ,
36
+ 1.0989790604300809E+275 , - 1.2587740892853646E+280 , 9.4814881264904194E-182 , - 1.1571531521085438E+237 ,
37
+ 1.229603368447179E+177 , - 2.604114864379276E+231 , - 9.2664762752613728E+19 , 3.1108827462661377E+207 ,
38
+ - 0.00097578440812214106 , - 1.6334311869848364E+64 , 2.1522092663265792E-148 , - 9.703594347075139E-116 ,
39
+ - 5.38618978004519E+153 , 1.5183273612167631E-68 , 1.488965790360276E+231 , - 1.9635140707561793E+263 ,
40
+ 8.3909068205945064E-24 , 9.0358877500255654E+296 , - 9.1999672792620295E+304 , 3.5512093967849135E+264 ,
41
+ - 2.8892650165544142E+105 , 4.3108753206738937E-193 , - 1.8348272430681013E-43 , 5.1858841474652699E-213 ,
42
+ - 3.004636725533007E-243 , 6.132335794645227E+296 , - 3.7468512147382775E-154 , 7.6218053022237471E-96 ,
43
+ 4.3743536049921071E-103 , 5.9816034318820231E-216 , 1.460199038405993E-91 , 6.5876192666238764E+29 ,
44
+ - 7.3794025156926594E+268 , 5.7991955341983553E-13 , - 5.6634238293438093E+89 , - 5.8200791917381605E+113 ,
45
+ - 9.382352775848059E+207 , 2.861558467972407E-77 , 2.4696625114917344E-110 , 2.7557374555587394E-267 ,
46
+ - 2.4824860795877484E+248 , - 2.3404664456505793E+142 , 1.1936363470265948E-138 , - 5.1554094132155965E+218 ,
47
+ - 2.1345621384067773E+95 , 3.9095198281989856E-22 , - 2.5788222256938449E+115 , 1.9099286980025499E-239 ,
48
+ 5.5884812735780678E-97 , - 4.3532845559098668E-234 , - 1.2510799969917003E-181 , 4.5603347604034982E+136 ,
49
+ 4.7061203764035123E-83 , 9.1737236235132167E-41 , - 2.613613939729813E-298 , 1.9880402498870573E+83 ,
50
+ 1.7345656478778084E+249 , - 3.0319077060207514E-105 , - 6.7629333338910013E+294 , - 1.6866269280513859E+99 ,
51
+ - 3.3783315435921158E-248 , - 5.0835175037376279E+51 , 2.2823484706956437E+223 , - 5.2350800373676555E-66 ,
52
+ 2.1938940008469276E-254 , 2.6638615147066538E+223 , 2.4842709854584848E+182 , - 1.0299057921221703E-27 ,
53
+ 3.0990818534379688E+185 , 2.0262114067427639E-188 , - 5.4296554749002973E+66 , 4.7675539353956493E+169 ,
54
+ 1.3573132727962003E-118 , - 6.5274465463956772E-14 , - 4.5392607746338724E-127 , 1.6102418832131022E-23 ,
55
+ - 1.1847308830399821E+132 , 1.2513568633577283E-16 , - 1.0228949260107244E+112 , - 8.9922531416247386E+192 ,
56
+ 7.916548295980459E-222 , 1.2312727320104881E+232 , - 1.6122158694745404E-18 , - 3.481233193000274E-90 ,
57
+ 1.1167822845877998E-174 , 3.0933218387919583E+155 , 3.5277642137107372E+44 , - 2.9137622769215298E+290 ,
58
+ 1.9957749835438084E+236 , 6.1872472933038688E-164 , 5.2600259335078834E+243 , - 1.4443859349276303E+148 ,
59
+ 5.1467859055870169E+229 , 7.7995527993037581E+130 , - 1.1114533180621355E-125 , 2.6399665987764258E+231 ,
60
+ 4.2784642805717917E+60 , 5.4325889050482818E-24 , 2.3471782221662184E-139 , 1.5023114689184499E+139 ,
61
+ - 7.739248628015553E-261 , - 1.2718020201744012E+243 , - 1.9381306484670001E+67 , - 4.6914660580129212E+70 ,
62
+ - 1.1133219329239814E-265 , 3.6846941503987795E+249 , - 2.0748351868579771E+204 , 6.6937077510630353E+112 ,
63
+ - 6.2048307225072857E-139 , 3.176804470596129E-165 , - 2.7918709132760115E-30 , - 1.0492637299075539E+301 ,
64
+ - 2.6913198235452055E+26 , - 2.9117223403452271E+233 , - 4.7027363008739307E-228 , 1.8114587021063903E-271 ,
65
+ - 1.3241417053933245E+48 , 3.6325124729858898E+91 , - 6.2457791807094912E-141 , - 1.4491174268613238E+237 ,
66
+ 9.8874123752594577E+120 , - 2.0319709324516646E+28 , - 1.5957803938054728E+152 , 3.1874238863547971E+279 ,
67
+ - 1.8250643090422224E-303 , 5.9599696895418363E+64 , - 2.2787607401244759E-36 , 1.5008922629428054E+65 ,
68
+ 1.1505681598544734E+148 , - 1.3637263423245691E+49 , - 4.8856652999596355E-147 , - 2.9116196687899166E+205 ,
69
+ 1.8874332547772457E+175 , - 6.5990215259187729E-33 , 2.6264478209319808E+277 , 1.5689005450286684E-299 ,
70
+ - 6.1497353187898311E-262 , 1.9581923365154108E+242 , 3.8357464877695169E+219 , - 7.0508384785114966E+159 ,
71
+ 6.0207319343426195E+116 , 1.5765702742095276E+54 , 4.9958914890061474E+286 , - 3.6781148546295676E-239 ,
72
+ - 6.0586380916259018E-146 , 1.0108359360144948E-84 , 1.0745744993668423E-293 , 9.2956759200531128E+287 ,
73
+ - 4.7638929609005592E+115 , 9.5054275587231182E-84 , - 1.8743692919210275E+266 , - 2.0903280235511906E-65 ,
74
+ 2.6520969143313191E+44 , 2.5068662790255933E-108 , 7.4153606567030972E-173 , 0.027621597514295559 ,
75
+ 1.4414796379735879E-59 , 8.9494241208820869E+230 , - 1.9129924797775677E+176 , - 3.8951193066001035E-157 ,
76
+ 1.1346280594792284E-121 , - 2.316668663199865E-205 , - 1.5072932644663529E-226 , - 1.629331170675189E-133 ,
77
+ 1.9851829729633109E-177 , 9.7822255568416942E+240 , 9.862710004113815E-199 , - 6.1538515262395028E+109 ,
78
+ 6.7804585434686301E-67 , - 6.4119939251743156E-51 , - 5.3875889389093929E+155 , 8.3674428579373504E+136
271
79
} ;
272
80
273
81
private static readonly byte [ ] ChecksumByteBox = new byte [ ] { 244 , 255 , 193 , 198 , 73 ,
@@ -409,19 +217,19 @@ public static class WebCrypto
409
217
{
410
218
byte currentByte = 0 ;
411
219
int DataIndex = 0 ;
412
- float tempFloat = ( float ) ( initialValue & 0xFFFFFF | 0x3F000000 ) ;
220
+ double tempDouble = BitConverter . Int64BitsToDouble ( ! BitConverter . IsLittleEndian ? EndianTools . EndianUtils . EndianSwap ( initialValue ) : initialValue ) ;
413
221
byte [ ] CheckSumBytes = new byte [ inputData . Length ] ;
414
222
415
223
Ionic . Crc . CRC32 crc = new ( ) ;
416
224
417
225
do
418
226
{
419
- currentByte = ( byte ) ( inputData [ DataIndex ] ^ BitConverter . SingleToInt32Bits ( ! BitConverter . IsLittleEndian ? EndianTools . EndianUtils . EndianSwap ( tempFloat ) : tempFloat ) ) ;
227
+ currentByte = ( byte ) ( inputData [ DataIndex ] ^ BitConverter . DoubleToInt64Bits ( ! BitConverter . IsLittleEndian ? EndianTools . EndianUtils . EndianSwap ( tempDouble ) : tempDouble ) ) ;
420
228
CheckSumBytes [ DataIndex ] = currentByte ;
421
- tempFloat = ( ChecksumFloatBox [ currentByte ] ) /
422
- ( float ) ( ( ( uint ) ( ChecksumByteBox [ ( uint ) tempFloat & 0xFF ] ) << 0x10 ) |
423
- ( ( uint ) ( ChecksumByteBox [ ( uint ) tempFloat >> 8 & 0xFF ] ) << 8 ) |
424
- ( uint ) ( ChecksumByteBox [ ( uint ) tempFloat >> 0x10 & 0xFF ] ) | 0x3F000000 ) ;
229
+ tempDouble = ChecksumDoubleBox [ currentByte ] /
230
+ ( ( ( uint ) ChecksumByteBox [ ( uint ) tempDouble & 0xFF ] << 0x10 ) |
231
+ ( ( uint ) ChecksumByteBox [ ( uint ) tempDouble >> 8 & 0xFF ] << 8 ) |
232
+ ChecksumByteBox [ ( uint ) tempDouble >> 0x10 & 0xFF ] | 0x3F000000 ) ;
425
233
DataIndex ++ ;
426
234
} while ( DataIndex != inputData . Length ) ;
427
235
0 commit comments