လွယ်လွယ်ပြောရရင် Hashing ဆိုတာ စာသားတစ်ခုကို တစ်ဖက်သတ် ပြောင်းလိုက်ပြီး မူရင်းစာကို ပြန်ဖော်လို့ မရအောင် လုပ်တဲ့နည်းပါ။ Website တွေက ကိုယ့် password အစစ်ကို မသိမ်းထားဘူး။ Hash လုပ်ထားတဲ့ တန်ဖိုးကိုပဲ သိမ်းထားတယ်။

အစားအသောက်ဥပမာနဲ့ စဉ်းစားကြည့်ပါ။

ကိုယ်က ကြက်သားဟင်း ချက်တယ်ဆိုပါစို့။ ဟင်းတစ်ခွက်ရလာပြီ။ တစ်ယောက်ယောက်က အဲဒီဟင်းခွက်ကို ကြည့်ပြီး “ဆား ဘယ်နှစ်ဇွန်း ထည့်ထားလဲ၊ ကြက်သား ဘယ်အရွယ်အစား လှီးထားလဲ” အတိအကျ ပြန်ပြောနိုင်မလား? မပြောနိုင်ဘူး။ ဟင်းက တစ်ဖက်သတ် ပြောင်းသွားပြီ။ ပြန်ခွဲထုတ်လို့ မရတော့ဘူး။

Hashing လည်း ဒီလိုပဲ။ “hello123” ဆိုတဲ့ password ကို hash လုပ်လိုက်ရင် “5d41402abc4b2a76b9719d911017c592” လိုမျိုး စာအရှည်ကြီး ထွက်လာတယ်။ အဲဒီစာကို ကြည့်ပြီး မူရင်း “hello123” ကို ပြန်တွက်ထုတ်လို့ မရဘူး။ ဒါပေမယ့် “hello123” ကို ထပ်ပြီး hash လုပ်တိုင်း အဲဒီတန်ဖိုး အတူတူပဲ ထွက်တယ်။ ဒါကြောင့် website က စစ်ဆေးလို့ ရတယ်။

Login ဝင်တဲ့ အခါ ဘာဖြစ်လဲ ဆိုတော့ –

ကိုယ် password ရိုက်ထည့်လိုက်တယ်
Website က အဲဒီ password ကို hash လုပ်တယ်
ရလာတဲ့ hash ကို အရင်က သိမ်းထားတဲ့ hash နဲ့ တိုက်စစ်တယ်
တူရင် login ဝင်ခွင့်ပေးတယ်၊ မတူရင် ငြင်းတယ်

Website ကိုယ်တိုင်တောင် ကိုယ့် password အစစ်ကို မသိဘူး။ ဒါကြောင့် website တစ်ခု hack ခံရပြီး database ပေါက်သွားရင်တောင် hacker က hash တွေပဲ ရတယ်၊ password အစစ်ကို တန်းမရဘူး။

ဒါဆိုရင် ဘာလို့ password တွေ ပေါက်ကြားတယ် ကြားနေရတာလဲ? အကြောင်းက နှစ်ခုရှိတယ်။ တစ်ခုက website တချို့က hash ကို အားနည်းတဲ့ နည်း (MD5 လိုမျိုး) နဲ့ လုပ်ထားမိတာ။ နောက်တစ်ခုက user တွေကိုယ်တိုင်က “123456” လို ခန့်မှန်းရလွယ်တဲ့ password တွေ သုံးတာ။ Hacker က လူသုံးများတဲ့ password စာရင်းကြီးကို hash လုပ်ပြီး တိုက်စစ်ကြည့်ရင် အားနည်းတဲ့ password တွေ ပေါ်လာတာပဲ။

ကောင်းတဲ့ website တွေက ဒီနည်းတွေ သုံးတယ် –

bcrypt / Argon2 — hash လုပ်တာကို တမင် နှေးအောင် လုပ်ထားတယ်၊ hacker အလုံးအရင်း စမ်းဖို့ ခက်တယ်
Salt — user တစ်ယောက်ချင်းစီအတွက် ကျပန်းစာ တစ်ခု ထပ်ပေါင်းတယ်၊ password တူနေရင်တောင် hash မတူတော့ဘူး

Encryption နဲ့ မတူဘူးနော်။ Encryption က သော့နဲ့ ပြန်ဖွင့်လို့ရတယ် — စာကို သော့ခတ်ပြီး ပြန်ဖွင့်တဲ့ သဘော။ Hashing က သော့မရှိဘူး၊ တစ်ခါပြောင်းပြီးရင် ပြန်လှန်လို့ မရဘူး။ Password လို “တူမတူ စစ်ရုံပဲ လိုပြီး ပြန်ဖတ်စရာ မလိုတဲ့” အရာတွေအတွက် hashing က အမှန်ကန်ဆုံး ရွေးချယ်မှုပဲ။

ကိုယ့်ဘက်က လုပ်လို့ရတာက ရှင်းရှင်းလေးပဲ — password ရှည်ရှည် မတူတာတွေ သုံးပါ။ Website က hash ကောင်းကောင်း သုံးထားရင်တောင် ကိုယ့် password က “password123” ဆိုရင် ဘယ် hash မှ မကယ်နိုင်ဘူး။ 🙂