CRC-32B հեշ կոդի Հաշվիչ
Հրապարակվել է՝ 17 փետրվարի, 2025 թ., 18:34:02 UTC
Հեշ կոդի հաշվիչը, որն օգտագործում է CRC-32B (Cyclic Redundancy Check 32 bit, B տարբերակ) հեշ ֆունկցիան՝ տեքստի մուտքագրման կամ ֆայլի վերբեռնման հիման վրա հեշ կոդը հաշվարկելու համար:CRC-32B Hash Code Calculator
Cyclic Redundancy Check-ը (CRC) սխալ հայտնաբերող կոդ է, որը սովորաբար օգտագործվում է չմշակված տվյալների պատահական փոփոխությունները հայտնաբերելու համար: Թեև տեխնիկապես կրիպտոգրաֆիկ հեշ ֆունկցիա չէ, CRC-32-ը հաճախ կոչվում է հեշ՝ փոփոխական երկարության մուտքից ֆիքսված չափի ելք (32 բիթ) արտադրելու ունակության պատճառով: Այս էջում ներկայացված տարբերակը CRC-32B տարբերակն է, որն իրոք պարզապես տարօրինակություն է PHP լեզվում, որը շրջում է բիթերը (բիգ-էնդիան ընդդեմ մեծ էնդիան բնօրինակ CRC-32-ում):
Ամբողջական բացահայտում. ես չեմ գրել այս էջում օգտագործվող հեշ ֆունկցիայի կոնկրետ իրականացումը: Այն ստանդարտ ֆունկցիա է, որը ներառված է PHP ծրագրավորման լեզվով: Ես միայն վեբ ինտերֆեյսը դարձրեցի, որպեսզի այն հանրությանը հասանելի դարձնեմ այստեղ՝ հարմարության համար:
CRC-32B Hash ալգորիթմի մասին
Ես մաթեմատիկոս չեմ, բայց կփորձեմ բացատրել այս հեշ ֆունկցիան պարզ անալոգիայով: Ի տարբերություն գաղտնագրման հեշ գործառույթներից շատերի, դա առանձնապես բարդ ալգորիթմ չէ, ուստի, հավանաբար, լավ կլինի ;-)
Պատկերացրեք, որ նամակ եք ուղարկում փոստով, բայց անհանգստանում եք, որ այն կարող է վնասվել մինչև ստացողին հասնելը: Նամակի բովանդակությունից ելնելով` դուք հաշվարկում եք CRC-32 ստուգիչ գումարը և այն գրում ծրարի վրա: Երբ ստացողը ստանում է նամակը, նա կարող է նաև հաշվարկել ստուգման գումարը և տեսնել, թե արդյոք այն համապատասխանում է ձեր գրածին: Եթե այդպես է, նամակը ճանապարհին չի վնասվել կամ չի փոխվել:
Այն, թե ինչպես է CRC-32-ը դա անում, չորս քայլ գործընթաց է.
Քայլ 1. Ավելացնել որոշ լրացուցիչ տարածք (լիցք)
- CRC-ն հաղորդագրության վերջում ավելացնում է մի փոքր լրացուցիչ սենյակ (ինչպես գետնանուշները տուփի մեջ փաթեթավորելը):
- Սա օգնում է նրան ավելի հեշտությամբ հայտնաբերել սխալները:
Քայլ 2. Կախարդական քանոն (Բազմանդամ)
- CRC-32-ը տվյալների չափման համար օգտագործում է հատուկ «կախարդական քանոն»:
- Մտածեք այս քանոնի մասին, ինչպես բշտիկների և ակոսների օրինակ (սա բազմանդամն է, բայց մի անհանգստացեք այդ բառի համար):
- CRC-32-ի ամենատարածված «կանոնը» ֆիքսված օրինակն է:
Քայլ 3. Քանոնի սահում (բաժանման գործընթաց)
- Այժմ CRC-ը սահեցնում է քանոնը հաղորդագրության վրայով:
- Յուրաքանչյուր կետում այն ստուգում է, թե արդյոք բշտիկները և ակոսները համընկնում են:
- Եթե նրանք չեն համընկնում, CRC-ն նշում է անում (սա արվում է պարզ XOR-ի միջոցով, օրինակ՝ անջատիչները միացնելով կամ անջատելով):
- Այն շարունակում է սահել և շրջել անջատիչները, մինչև այն հասնի ավարտին:
Քայլ 4. Վերջնական արդյունք (ստուգիչ գումար)
- Քանոնն ամբողջ հաղորդագրության վրա սահեցնելուց հետո ձեզ մնում է մի փոքր թիվ (32 բիթ երկարությամբ), որը ներկայացնում է սկզբնական տվյալները:
- Այս համարը նման է հաղորդագրության եզակի մատնահետքի:
- Սա CRC-32 ստուգիչ գումարն է:
Էջում ներկայացված տարբերակը CRC-32B տարբերակն է, որը հիմնականում PHP տարօրինակություն է, որը փոխում է բիթերի կարգը (little-endian vs big-endian): Դուք, հավանաբար, պետք է օգտագործեք այս տարբերակը միայն այն դեպքում, եթե ձեզ հատուկ անհրաժեշտ է համատեղելիություն այլ PHP հավելվածի հետ, որն օգտագործում է այն:
Ես ունեմ հաշվիչներ մյուս տարբերակների համար.