ဘယ်လို Base64 Encoding အလုပ်လုပ်

အင်တာနက်ကိုသတင်းအချက်အလက်အဝေးပြေးလမ်းမကြီးဖြစ်ပါသည်လျှင်, အီးမေးလ်လမ်းကြောင်းကျဉ်းမြောင်းချောက်ဖြစ်ပါတယ်။ သာအလွန်သေးငယ်တဲ့လှည်းကူးသွားနိုင်ပါတယ်။

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

ဘယ်လိုကြီး Truck ကားမြစ်တို့သည်တဆင့်သွားပါသလား?

ထိုအခါသင်မည်သို့သေးငယ်တဲ့ချောက်မှတစ်ဆင့်ကြီးမားတဲ့ထရပ်ကားပေးပို့သလဲ? သငျသညျ, တဦးကိုအဆုံးအပေါ်အပိုင်းပိုင်းကယူချောက်ကနေတဆင့်အပိုငျးပိုငျးသယ်ယူပို့ဆောင်နှငျ့အခွားသောအဆုံးအပျေါပိုငျးပိုငျးကနေထရပ်ကားပြန်ဆောက်ဖို့ရှိသည်။

သင်တစ်ဦးပေးပို့လာသောအခါတူညီဖြစ်ပျက် အီးမေးလ်ကနေတဆင့် file ကို attachment ကို ။ အဆိုပါ binary data တွေကိုကုဒ်သွင်းအဖြစ်လူသိများနေတဲ့လုပ်ငန်းစဉ်များတွင်ပြဿနာများမရှိဘဲအီးမေးလ်ထဲတွင်ပို့ဆောင်နိုင်သည့် ASCII စာသား, မှအသွင်ပြောင်းဖြစ်ပါတယ်။ လက်ခံသူရဲ့အဆုံးတွင်, ဒေတာဝှက်တာဖြစ်ပါတယ်နှင့်မူရင်းဖိုင်ကိုပြန်လည်တည်ဆောက်ထားပါသည်။

လွင်ပြင် ASCII text ကဲ့သို့မတရားဒေတာကုဒ်သွင်းတစ်ခုမှာနည်းလမ်း Base64 ဖြစ်ပါတယ်။ ဒါဟာနေဖြင့်အလုပ်ခန့်သည့်နည်းစနစ်တစ်ခုဖြစ်သည် MIME စံ ထက်အခြား data ပို့ စာသား

အဆိုပါကယ်ဆယ်ရေးမှ Base64

Base64 encoding ကတစ်ဦးချင်းစီရှစ်-bits ပါဝင်သည်ဟုသုံး bytes ကြာ, နှင့် ASCII စံလေး print ထုတ်လို့ရတဲ့ဇာတ်ကောင်အဖြစ်သူတို့ကိုကိုယ်စားပြုသည်။ ဒါဟာမရှိမဖြစ်လိုအပ်တဲ့နှစ်ခုခြေလှမ်းများအတွက်ပါဘူး။

ပထမဦးဆုံးခြေလှမ်းကိုခြောက်-bits လေးနံပါတ်များကိုမှသုံး bytes ပြောင်းဖို့ဖြစ်ပါတယ်။ အဆိုပါ ASCII စံစီဇာတ်ကောင်ခုနစ်ခု-bits ပါဝင်ပါသည်။ Base64 သာကုဒ်သွင်းဒေတာကို print ထုတ်လို့ရတဲ့နှင့် humanly ဖတ်လို့ရအောင်ဖြစ်ပါတယ်သေချာစေရန် 6 bits သည် (2 ^ 6 = 64 ဇာတ်ကောင်နဲ့သက်ဆိုင်တဲ့) ကိုအသုံးပြုပါတယ်။ ASCII အတွက်ရရှိနိုင်အထူးဇာတ်ကောင်အဘယ်သူအားမျှအသုံးပြုကြသည်။

အဆိုပါ 64 ဇာတ်ကောင် (ဤအရပ်မှနာမတော်ကိုအမှီ ပြု. Base64) 10 ဂဏန်း, 26 စာလုံးအသေးစာလုံးများ, 26 ကြီးဇာတ်ကောင်အဖြစ် '+' နဲ့ '/' ဖြစ်ကြသည်။

ဥပမာအားဖြင့်သုံး bytes 155, 162 နဲ့ 233 ရောက်နေတယ်ဆိုရင်, သက်ဆိုင်ရာ (နှင့်ကြောက်မက်ဖွယ်) နည်းနည်းစီးအလှည့်အတွက် 6-bit နဲ့တန်ဖိုးများကို 38, 58, 11 နဲ့ 41 မှကိုက်ညီသည့် 100110111010001011101001 ဖြစ်ပါသည်။

ဤရွေ့ကားနံပါတ်များ Base64 encoding ကစားပွဲပေါ်မှာသုံးပြီးဒုတိယခြေလှမ်းအတွက် ASCII ဇာတ်ကောင်အဖြစ်ပြောင်းလဲနေကြသည်။ ကျွန်တော်တို့ရဲ့ဥပမာ၏ 6-bit နဲ့တန်ဖိုး ASCII sequence ကို "m6Lp" ကိုဘာသာပြန်ဆို။

ဒါက Two-ခြေလှမ်းဖြစ်စဉ်ကို encoded ဖြစ်ကြောင်း bytes ၏တပြင်လုံးကို sequence ကိုအသုံးချခြင်းဖြစ်သည်။ အဆိုပါ encoded data တွေကိုစနစ်တကျပုံနှိပ်နိုင်ပြီးမည်သည့်မေးလ်ဆာဗာ၏လိုင်းအရှည်န့်သတ်ချက်ထက်မပိုပါဘူးသေချာစေရန်, NEWLINE ဇာတ်ကောင် 76 ဇာတ်ကောင်ကိုအောက်တွင်လိုင်းအရှည်ကိုစောင့်ရှောက်ရန်ဖြည့်စွက်ထားပါသည်။ အဆိုပါ NEWLINE ဇာတ်ကောင်အားလုံးအခြားဒေတာနဲ့တူ encoded နေကြသည်။

နောက်ဆုံးအခြေအနေဟာဖြေရှင်းရေး

အဆိုပါ encoding ကလုပ်ငန်းစဉ်၏အဆုံးမှာကျနော်တို့ပြဿနာတစ်ခုထဲသို့ပြေးပေလိမ့်မည်။ bytes ဖြင့်မူရင်းအချက်အလက်များ၏အရွယ်အစားသုံးဦး၏မျိုးစုံသည်ဆိုပါက, အရာအားလုံးဒဏ်ငွေအလုပ်လုပ်ပါတယ်။ ဒါဟာမဖြစ်လျှင်, ငါတို့သည်တစ်ဦးသို့မဟုတ်နှစ်ဦးကို 8-bit နဲ့ bytes အတူတက်အဆုံးသတ်ပေလိမ့်မည်။ သငျ့လျြောသော encoding က, ကြှနျုပျတို့သို့သော်အတိအကျသုံး bytes လိုအပ်ပါတယ်။

ဒီဖြေရှင်းချက် 3-byte အုပ်စုတစ်စုကိုဖန်တီးရန် '' 0 '' ၏တန်ဖိုးနှင့်အတူအလုံအလောက် bytes append ရန်ဖြစ်ပါသည်။ နှစ်ဦးကယင်းသို့တန်ဖိုးများကိုကျနော်တို့အချက်အလက်များ၏တဦးတည်းအပိုက ​​byte ရှိပါက, နှစျဦးအပို bytes များအတွက်ဖြည့်တွဲနေသည်ဖြည့်တွဲနေကြသည်။

၏သင်တန်းအဲဒီအတု Trail '0 ရဲ့အောက်ကကုဒ်ပြောင်းစားပွဲပေါ်မှာသုံးပြီး encoded မရနိုင်ပါ။ သူတို့ကတစ်ဦး 65 ဇာတ်ကောင်ကကိုယ်စားပြုထားရပါမည်။

အဆိုပါ Base64 padding ကိုဇာတ်ကောင် '=' 'ဖြစ်ပါတယ်။ သဘာဝကျကျ, ကသာအစဉ်အဆက်ကုဒ်သွင်းအချက်အလက်များ၏အဆုံးမှာပေါ်လာနိုင်ပါတယ်။

Base64 Encoding ဇယား

အဘိုး char အဘိုး char အဘိုး char အဘိုး char
0 င် တစ်ဦးက 16 မေး 32 48 w
1 B က 17 R ကို 33 49 x က
2 ကို C 18 S က 34 ကိုယ့် 50 y က
3 : D 19 T က 35 51 z
4 E ကို 20 ဦး 36 52 0 င်
5 F ကို 21 V ကို 37 53 1
6 , G 22 W က 38 မီတာ 54 2
7 H ကို 23 X ကို 39 55 3
8 ငါ 24 Y က 40 o 56 4
9 J ကို 25 Z ကို 41 p 57 5
10 K သည် 26 တစ်ဦး 42 က q 58 6
11 L ကို 27 43 r 59 7
12 M က 28 က c 44 s ကို 60 8
13 N ကို 29 45 t ကို 61 9
14 အို 30 ရက် အီး 46 ဦး 62 +
15 : P 31 f 47 v 63 /