Bonjour tout le monde !!
Dites moi, je cherche à faire une petite fonction VB toute bébête qui me retourne le CRC32 d'un input de type String.
Ex : =checkCRC32("HELLOWORLD") => devrait me retourner "f2743d92" (conformément aux implémentations disponibles sur http://www.fileformat.info/tool/hash...ext=HELLOWORLD ou encore http://www.zorc.breitbandkatze.de/crc.html ou encore bien d'autres sites.
J'ai trouvé cette petite implémentation sur le ouaib :
Bon le gars avait l'air de s'y connaitre alors j'ai fait un petit copié collé, mais là je n'obtiens pas le bon résultat, j'obtiens : -227263086 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278 Public Function checkCRC32(str) As String Dim crc32Table(256) As Long crc32Table(0) = 0 crc32Table(1) = 1996959894 crc32Table(2) = -301047508 crc32Table(3) = -1727442502 crc32Table(4) = 124634137 crc32Table(5) = 1886057615 crc32Table(6) = -379345611 crc32Table(7) = -1637575261 crc32Table(8) = 249268274 crc32Table(9) = 2044508324 crc32Table(10) = -522852066 crc32Table(11) = -1747789432 crc32Table(12) = 162941995 crc32Table(13) = 2125561021 crc32Table(14) = -407360249 crc32Table(15) = -1866523247 crc32Table(16) = 498536548 crc32Table(17) = 1789927666 crc32Table(18) = -205950648 crc32Table(19) = -2067906082 crc32Table(20) = 450548861 crc32Table(21) = 1843258603 crc32Table(22) = -187386543 crc32Table(23) = -2083289657 crc32Table(24) = 325883990 crc32Table(25) = 1684777152 crc32Table(26) = -43845254 crc32Table(27) = -1973040660 crc32Table(28) = 335633487 crc32Table(29) = 1661365465 crc32Table(30) = -99664541 crc32Table(31) = -1928851979 crc32Table(32) = 997073096 crc32Table(33) = 1281953886 crc32Table(34) = -715111964 crc32Table(35) = -1570279054 crc32Table(36) = 1006888145 crc32Table(37) = 1258607687 crc32Table(38) = -770865667 crc32Table(39) = -1526024853 crc32Table(40) = 901097722 crc32Table(41) = 1119000684 crc32Table(42) = -608450090 crc32Table(43) = -1396901568 crc32Table(44) = 853044451 crc32Table(45) = 1172266101 crc32Table(46) = -589951537 crc32Table(47) = -1412350631 crc32Table(48) = 651767980 crc32Table(49) = 1373503546 crc32Table(50) = -925412992 crc32Table(51) = -1076862698 crc32Table(52) = 565507253 crc32Table(53) = 1454621731 crc32Table(54) = -809855591 crc32Table(55) = -1195530993 crc32Table(56) = 671266974 crc32Table(57) = 1594198024 crc32Table(58) = -972236366 crc32Table(59) = -1324619484 crc32Table(60) = 795835527 crc32Table(61) = 1483230225 crc32Table(62) = -1050600021 crc32Table(63) = -1234817731 crc32Table(64) = 1994146192 crc32Table(65) = 31158534 crc32Table(66) = -1731059524 crc32Table(67) = -271249366 crc32Table(68) = 1907459465 crc32Table(69) = 112637215 crc32Table(70) = -1614814043 crc32Table(71) = -390540237 crc32Table(72) = 2013776290 crc32Table(73) = 251722036 crc32Table(74) = -1777751922 crc32Table(75) = -519137256 crc32Table(76) = 2137656763 crc32Table(77) = 141376813 crc32Table(78) = -1855689577 crc32Table(79) = -429695999 crc32Table(80) = 1802195444 crc32Table(81) = 476864866 crc32Table(82) = -2056965928 crc32Table(83) = -228458418 crc32Table(84) = 1812370925 crc32Table(85) = 453092731 crc32Table(86) = -2113342271 crc32Table(87) = -183516073 crc32Table(88) = 1706088902 crc32Table(89) = 314042704 crc32Table(90) = -1950435094 crc32Table(91) = -54949764 crc32Table(92) = 1658658271 crc32Table(93) = 366619977 crc32Table(94) = -1932296973 crc32Table(95) = -69972891 crc32Table(96) = 1303535960 crc32Table(97) = 984961486 crc32Table(98) = -1547960204 crc32Table(99) = -725929758 crc32Table(100) = 1256170817 crc32Table(101) = 1037604311 crc32Table(102) = -1529756563 crc32Table(103) = -740887301 crc32Table(104) = 1131014506 crc32Table(105) = 879679996 crc32Table(106) = -1385723834 crc32Table(107) = -631195440 crc32Table(108) = 1141124467 crc32Table(109) = 855842277 crc32Table(110) = -1442165665 crc32Table(111) = -586318647 crc32Table(112) = 1342533948 crc32Table(113) = 654459306 crc32Table(114) = -1106571248 crc32Table(115) = -921952122 crc32Table(116) = 1466479909 crc32Table(117) = 544179635 crc32Table(118) = -1184443383 crc32Table(119) = -832445281 crc32Table(120) = 1591671054 crc32Table(121) = 702138776 crc32Table(122) = -1328506846 crc32Table(123) = -942167884 crc32Table(124) = 1504918807 crc32Table(125) = 783551873 crc32Table(126) = -1212326853 crc32Table(127) = -1061524307 crc32Table(128) = -306674912 crc32Table(129) = -1698712650 crc32Table(130) = 62317068 crc32Table(131) = 1957810842 crc32Table(132) = -355121351 crc32Table(133) = -1647151185 crc32Table(134) = 81470997 crc32Table(135) = 1943803523 crc32Table(136) = -480048366 crc32Table(137) = -1805370492 crc32Table(138) = 225274430 crc32Table(139) = 2053790376 crc32Table(140) = -468791541 crc32Table(141) = -1828061283 crc32Table(142) = 167816743 crc32Table(143) = 2097651377 crc32Table(144) = -267414716 crc32Table(145) = -2029476910 crc32Table(146) = 503444072 crc32Table(147) = 1762050814 crc32Table(148) = -144550051 crc32Table(149) = -2140837941 crc32Table(150) = 426522225 crc32Table(151) = 1852507879 crc32Table(152) = -19653770 crc32Table(153) = -1982649376 crc32Table(154) = 282753626 crc32Table(155) = 1742555852 crc32Table(156) = -105259153 crc32Table(157) = -1900089351 crc32Table(158) = 397917763 crc32Table(159) = 1622183637 crc32Table(160) = -690576408 crc32Table(161) = -1580100738 crc32Table(162) = 953729732 crc32Table(163) = 1340076626 crc32Table(164) = -776247311 crc32Table(165) = -1497606297 crc32Table(166) = 1068828381 crc32Table(167) = 1219638859 crc32Table(168) = -670225446 crc32Table(169) = -1358292148 crc32Table(170) = 906185462 crc32Table(171) = 1090812512 crc32Table(172) = -547295293 crc32Table(173) = -1469587627 crc32Table(174) = 829329135 crc32Table(175) = 1181335161 crc32Table(176) = -882789492 crc32Table(177) = -1134132454 crc32Table(178) = 628085408 crc32Table(179) = 1382605366 crc32Table(180) = -871598187 crc32Table(181) = -1156888829 crc32Table(182) = 570562233 crc32Table(183) = 1426400815 crc32Table(184) = -977650754 crc32Table(185) = -1296233688 crc32Table(186) = 733239954 crc32Table(187) = 1555261956 crc32Table(188) = -1026031705 crc32Table(189) = -1244606671 crc32Table(190) = 752459403 crc32Table(191) = 1541320221 crc32Table(192) = -1687895376 crc32Table(193) = -328994266 crc32Table(194) = 1969922972 crc32Table(195) = 40735498 crc32Table(196) = -1677130071 crc32Table(197) = -351390145 crc32Table(198) = 1913087877 crc32Table(199) = 83908371 crc32Table(200) = -1782625662 crc32Table(201) = -491226604 crc32Table(202) = 2075208622 crc32Table(203) = 213261112 crc32Table(204) = -1831694693 crc32Table(205) = -438977011 crc32Table(206) = 2094854071 crc32Table(207) = 198958881 crc32Table(208) = -2032938284 crc32Table(209) = -237706686 crc32Table(210) = 1759359992 crc32Table(211) = 534414190 crc32Table(212) = -2118248755 crc32Table(213) = -155638181 crc32Table(214) = 1873836001 crc32Table(215) = 414664567 crc32Table(216) = -2012718362 crc32Table(217) = -15766928 crc32Table(218) = 1711684554 crc32Table(219) = 285281116 crc32Table(220) = -1889165569 crc32Table(221) = -127750551 crc32Table(222) = 1634467795 crc32Table(223) = 376229701 crc32Table(224) = -1609899400 crc32Table(225) = -686959890 crc32Table(226) = 1308918612 crc32Table(227) = 956543938 crc32Table(228) = -1486412191 crc32Table(229) = -799009033 crc32Table(230) = 1231636301 crc32Table(231) = 1047427035 crc32Table(232) = -1362007478 crc32Table(233) = -640263460 crc32Table(234) = 1088359270 crc32Table(235) = 936918000 crc32Table(236) = -1447252397 crc32Table(237) = -558129467 crc32Table(238) = 1202900863 crc32Table(239) = 817233897 crc32Table(240) = -1111625188 crc32Table(241) = -893730166 crc32Table(242) = 1404277552 crc32Table(243) = 615818150 crc32Table(244) = -1160759803 crc32Table(245) = -841546093 crc32Table(246) = 1423857449 crc32Table(247) = 601450431 crc32Table(248) = -1285129682 crc32Table(249) = -1000256840 crc32Table(250) = 1567103746 crc32Table(251) = 711928724 crc32Table(252) = -1274298825 crc32Table(253) = -1022587231 crc32Table(254) = 1510334235 crc32Table(255) = 755167117 Dim crc32Result As Long crc32Result = &HFFFFFFFF Dim i As Integer Dim iLookup As Integer Dim buffer() As Byte buffer = StrConv(str, vbFromUnicode) For i = LBound(buffer) To UBound(buffer) iLookup = (crc32Result And &HFF) Xor buffer(i) crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And 16777215 ' nasty shr 8 with vb :/ crc32Result = crc32Result Xor crc32Table(iLookup) Next i checkCRC32 = Not (crc32Result) End Function
Quelqu'un s'y connait un peu en CRC32 ici ?? Quelqu'un peu m'aider svp ??
Merci par avance.
Bonne journée
Christophe
Partager