CRC-32B ဟက်ရှ်ကုဒ်တွက်စက်
ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၇ UTC ၁၈:၃၈:၃၇
နောက်ဆုံး မွမ်းမံပြင်ဆင်သည်- ၂၀၂၆၊ ဇန်နဝါရီ ၁၂ UTC ၁၁:၃၇:၀၀
CRC-32B Hash Code Calculator
Cyclic Redundancy Check (CRC) သည် raw data များတွင် မတော်တဆပြောင်းလဲမှုများကို ထောက်လှမ်းရန် အသုံးများသော error-detecting code တစ်ခုဖြစ်သည်။ နည်းပညာပိုင်းအရ cryptographic hash function မဟုတ်သော်လည်း CRC-32 ကို variable-length input မှ fixed-size output (32 bits) ကို ထုတ်လုပ်ပေးနိုင်သောကြောင့် hash အဖြစ် မကြာခဏ ရည်ညွှန်းလေ့ရှိသည်။ ဤစာမျက်နှာတွင် တင်ပြထားသော version မှာ CRC-32B variant ဖြစ်ပြီး ၎င်းသည် PHP ဘာသာစကားတွင် bits များကို ပြောင်းလဲစေသော quirk တစ်ခုသာဖြစ်သည် (မူရင်း CRC-32 တွင် little-endian vs big-endian)။
ထုတ်ဖော်ချက်အပြည့်အစုံ- ဤစာမျက်နှာတွင်အသုံးပြုထားသော hash function ၏ သီးခြားအကောင်အထည်ဖော်မှုကို ကျွန်ုပ်မရေးခဲ့ပါ။ ၎င်းသည် PHP ပရိုဂရမ်းမင်းဘာသာစကားဖြင့် ပါဝင်သော စံလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ အဆင်ပြေစေရန် ဤနေရာတွင် လူသိရှင်ကြားရစေရန် ဝဘ်အင်တာဖေ့စ်ကိုသာ ပြုလုပ်ထားပါသည်။
CRC-32B Hash Algorithm အကြောင်း
ကျွန်တော်က သင်္ချာပညာရှင် မဟုတ်ပေမယ့် ဒီ hash function ကို ရိုးရှင်းတဲ့ ဥပမာတစ်ခုနဲ့ ရှင်းပြပါ့မယ်။ တခြား cryptographic hash function တွေနဲ့ မတူဘဲ၊ ဒါက အထူးရှုပ်ထွေးတဲ့ algorithm မဟုတ်တဲ့အတွက် အဆင်ပြေနိုင်ပါတယ် ;-)
စာတိုက်ကနေ စာတစ်စောင်ပို့နေတယ်လို့ မြင်ယောင်ကြည့်ပါ၊ ဒါပေမယ့် လက်ခံသူဆီ မရောက်ခင် ပျက်စီးသွားမှာကို စိုးရိမ်နေမိတယ်။ စာရဲ့ အကြောင်းအရာပေါ်မူတည်ပြီး CRC-32 checksum ကို တွက်ချက်ပြီး စာအိတ်ပေါ်မှာ ရေးပါ။ လက်ခံသူက စာလက်ခံရရှိတဲ့အခါ checksum ကိုလည်း တွက်ချက်ပြီး သင်ရေးထားတာနဲ့ ကိုက်ညီမှုရှိမရှိ ကြည့်နိုင်ပါတယ်။ ကိုက်ညီတယ်ဆိုရင်တော့ စာက ပျက်စီးသွားတာ ဒါမှမဟုတ် ပြောင်းလဲသွားတာ မရှိပါဘူး။
CRC-32 က ဒီလိုလုပ်ဆောင်ပုံက အဆင့်လေးဆင့်နဲ့ လုပ်ဆောင်ပါတယ်။
အဆင့် ၁: အပိုနေရာလွတ်ထည့်ပါ (Padding)
- CRC က မက်ဆေ့ချ်ရဲ့အဆုံးမှာ နေရာအနည်းငယ်ထပ်ထည့်ပေးပါတယ် (ဥပမာ မြေပဲတွေကို သေတ္တာထဲထည့်သလိုပါပဲ)။
- ဒါက အမှားတွေကို ပိုမိုလွယ်ကူစွာ ရှာဖွေတွေ့ရှိနိုင်အောင် ကူညီပေးပါတယ်။
အဆင့် ၂: မှော်ရူပါရုံ (ပိုလီနိုမီရယ်)
- CRC-32 သည် ဒေတာကိုတိုင်းတာရန် အထူး "မှော်ပေတံ" ကို အသုံးပြုသည်။ ဤပေတံကို အဖုအထစ်များနှင့် မြောင်းများ၏ ပုံစံတစ်ခုအဖြစ် သဘောထားပါ (၎င်းသည် ပိုလီနိုမီရယ်ဖြစ်သည်၊ သို့သော် ထိုစကားလုံးအတွက် စိတ်မပူပါနှင့်)။ CRC-32 အတွက် အသုံးအများဆုံး "ပေတံ" သည် ပုံသေပုံစံတစ်ခုဖြစ်သည်။
အဆင့် ၃: ပေတံကို လျှောချခြင်း (ပိုင်းခြားခြင်းလုပ်ငန်းစဉ်)
- ယခု CRC သည် ပေတံကို မက်ဆေ့ချ်တစ်လျှောက် လျှောကျစေသည်။ နေရာတိုင်းတွင် အဖုအထစ်များနှင့် မြောင်းများ တစ်တန်းတည်းဖြစ်မဖြစ် စစ်ဆေးသည်။ ၎င်းတို့ တစ်တန်းတည်းမဖြစ်ပါက CRC သည် မှတ်စုတစ်ခုပြုလုပ်သည် (၎င်းကို ခလုတ်များကို ဖွင့်ခြင်း သို့မဟုတ် ပိတ်ခြင်းကဲ့သို့ ရိုးရှင်းသော XOR ကို အသုံးပြု၍ လုပ်ဆောင်သည်)။ ၎င်းသည် ခလုတ်များကို အဆုံးသို့မရောက်မချင်း လျှောကျပြီး လှန်လှောနေသည်။
အဆင့် ၄: နောက်ဆုံးရလဒ် (Checksum)
- မက်ဆေ့ချ်တစ်ခုလုံးပေါ်တွင် ပေတံကို လျှောကျစေပြီးနောက်၊ မူရင်းဒေတာကို ကိုယ်စားပြုသည့် နံပါတ်ငယ်တစ်ခု (32 bits ရှည်လျားသည်) ကျန်ရှိနေမည်ဖြစ်သည်။ ဤနံပါတ်သည် မက်ဆေ့ချ်အတွက် ထူးခြားသော လက်ဗွေရာတစ်ခုကဲ့သို့ဖြစ်သည်။ ၎င်းသည် CRC-32 checksum ဖြစ်သည်။
စာမျက်နှာမှာ တင်ပြထားတဲ့ ဗားရှင်းက CRC-32B ဗားရှင်းဖြစ်ပြီး bit order ကို ပြောင်းလဲပေးတဲ့ PHP quirk တစ်ခုဖြစ်ပါတယ် (little-endian vs big-endian)။ ဒီဗားရှင်းကိုသုံးတဲ့ တခြား PHP application နဲ့ တွဲဖက်အသုံးပြုနိုင်ဖို့ အထူးလိုအပ်မှသာ ဒီဗားရှင်းကိုသုံးသင့်ပါတယ်။
တခြားဗားရှင်းတွေအတွက်လည်း ဂဏန်းတွက်စက်တွေ ကျွန်တော်မှာရှိပါတယ်။
- လင့်ခ်
- လင့်ခ်
နောက်ထပ်စာဖတ်ခြင်း။
ဤပို့စ်ကို သင်နှစ်သက်ပါက၊ ဤအကြံပြုချက်များကို သင်လည်း နှစ်သက်နိုင်ပါသည်-
