Base64 ኢንኮዲንግ ያንን ሁለትዮሽ ውሂብ ወደ ባለ 6-ቢት ቁምፊ ውክልና በመቀየር ሁለትዮሽ ውሂብን ወደ ASCII string format የመቀየር ሂደት ነው። የBase64 የመቀየሪያ ዘዴ ጥቅም ላይ የሚውለው እንደ ምስሎች ወይም ቪዲዮ ያሉ ሁለትዮሽ ውሂብ በቀላል ጽሑፍ (ASCII) ቅርጸት መረጃን ለማስተላለፍ በተዘጋጁ ስርዓቶች ላይ ሲተላለፍ ነው።
ለምንድነው Base64 ኢንኮዲንግ ስራ ላይ የሚውለው?
የBase64 ኢንኮዲንግ አስፈላጊነት የሚመጣው ሚዲያ በጥሬው በሁለትዮሽ ቅርጸት ወደ ጽሑፍ-ተኮር ስርዓቶች ሲተላለፍ ከሚከሰቱ ችግሮች ነው።
በፅሁፍ ላይ የተመሰረቱ ስርአቶች (እንደ ኢሜል ያሉ) ሁለትዮሽ መረጃዎችን እንደ ሰፊ የቁምፊዎች ብዛት፣ ልዩ የትዕዛዝ ቁምፊዎችን ጨምሮ ስለሚተረጉሙ፣ አብዛኛው የሁለትዮሽ ውሂብ ወደ ሚዲያ ማስተላለፍ የሚተላለፈው በእነዚያ ስርዓቶች በተሳሳተ መንገድ የተተረጎመ እና የጠፋ ወይም የተበላሸ ነው። የማስተላለፊያ ሂደት።
ይህን የመሰለ ሁለትዮሽ ዳታ የማስተላለፍ ችግርን በሚያስቀር መንገድ የመቀየሪያ ዘዴ አንዱ እንደ ግልጽ ASCII ጽሑፍ በBase64 encoded መላክ ነው። ከግልጽ ጽሁፍ ውጪ ውሂብ ለመላክ በMIME ደረጃ ከሚጠቀሙት ቴክኒኮች አንዱ ይህ ነው።
በርካታ የፕሮግራሚንግ ቋንቋዎች፣እንደ ፒኤችፒ እና ጃቫስክሪፕት፣በBase64 ኢንኮዲንግ በመጠቀም የሚተላለፉ መረጃዎችን ለመተርጎም Base64 ኢንኮዲንግ እና ዲኮዲንግ ተግባራትን ያካትታሉ።
Base64 ኢንኮዲንግ ሎጂክ
Base64 ኢንኮዲንግ ሁለትዮሽ መረጃን ወደ 6-ቢት የ3 ሙሉ ባይት ክፍሎች ይሰብራል እና በASCII መስፈርት እነዚያን እንደ ሊታተሙ ቁምፊዎች ይወክላል። ያንን በመሠረቱ በሁለት ደረጃዎች ያደርገዋል።
የመጀመሪያው እርምጃ የሁለትዮሽ ሕብረቁምፊውን ወደ 6-ቢት ብሎኮች መስበር ነው። Base64 ኢንኮድ የተደረገው መረጃ ሊታተም የሚችል እና በሰው ሊነበብ የሚችል መሆኑን ለማረጋገጥ 6 ቢት (ከ2^6=64 ቁምፊዎች ጋር የሚዛመድ) ብቻ ይጠቀማል። በASCII ውስጥ ካሉት ልዩ ቁምፊዎች ውስጥ የትኛውም ጥቅም ላይ አልዋለም።
64ቱ ፊደላት (ስለዚህ Base64 የሚለው ስም) 10 አሃዞች፣ 26 ንዑስ ሆሄያት፣ 26 አቢይ ሆሄያት እንዲሁም የፕላስ ምልክት (+) እና የ Forward Slash (/) ናቸው። ፓድ በመባል የሚታወቅ 65ኛ ቁምፊም አለ፣ እሱም የእኩል ምልክት (=) ነው። ይህ ቁምፊ ጥቅም ላይ የሚውለው የመጨረሻው የሁለትዮሽ ውሂብ ክፍል ሙሉ 6 ቢት ካልያዘ ነው።
Base64 ኢንኮዲንግ ምሳሌ
ለምሳሌ ሶስት የASCII ቁጥሮችን 155፣ 162 እና 233 ይውሰዱ። እነዚህ ሶስት ቁጥሮች የ100110111010001011101001 ሁለትዮሽ ዥረት ይመሰርታሉ። ሁለትዮሽ ፋይል ልክ እንደ ምስል ለአስር ወይም በመቶ ሺዎች የሚቆጠሩ ዜሮዎች የሚሰራ ሁለትዮሽ ዥረት ይይዛል። እና አንድ።
A Base64 ኢንኮደር ሁለትዮሽ ዥረቱን ወደ ስድስት ቁምፊዎች በቡድን በመከፋፈል ይጀምራል፡ 100110 111010 001011 101001። እያንዳንዳቸው እነዚህ ቡድኖች ወደ ቁጥር 38፣ 58፣ 11 እና 41 ይተረጎማሉ።
አንድ ባለ ስድስት ቁምፊ ሁለትዮሽ ዥረት በሁለትዮሽ (ወይም ቤዝ-2) መካከል ወደ አስርዮሽ (ቤዝ-10) ቁምፊዎች ይቀየራል እያንዳንዱን እሴት በ1 የሚወከለውን በሁለትዮሽ ቅደም ተከተል ካለው የአቀማመጥ ካሬ ጋር በማሳጠር።ከቀኝ እና ወደ ግራ በመነሳት እና በዜሮ በመጀመር በሁለትዮሽ ዥረቱ ውስጥ ያሉት እሴቶች 2^0፣ ከዚያ 2^1፣ ከዚያ 2^2፣ ከዚያ 2^3፣ ከዚያ 2^4፣ ከዚያም 2^5። ይወክላሉ።
እሱ ሌላ የሚታይበት መንገድ ይኸውና። ከግራ ጀምሮ እያንዳንዱ ቦታ 1 ፣ 2 ፣ 4 ፣ 8 ፣ 16 እና 32 ዋጋ አለው ። ሁለትዮሽ ቁጥሩ 1 በ ማስገቢያ ውስጥ ካለው ፣ ያንን እሴት ይጨምሩ። በ ማስገቢያ ውስጥ 0 ያለው ከሆነ, እርስዎ አይደለም. የሁለትዮሽ ሕብረቁምፊ 100110 ወደ አስርዮሽ ቁጥር 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 ይቀየራል። +4+0+0+32.
Base64 ኢንኮዲንግ ይህንን ሁለትዮሽ ሕብረቁምፊ ወስዶ ወደ 6-ቢት እሴቶች 38፣ 58፣ 11 እና 41 ይከፋፍለዋል።
በመጨረሻ፣ እነዚህ ቁጥሮች Base64 ኢንኮዲንግ ሠንጠረዥን በመጠቀም ወደ ASCII ቁምፊዎች ይቀየራሉ። የዚህ ምሳሌ 6-ቢት እሴቶች ወደ ASCII ቅደም ተከተል m6Lp። ይተረጉማሉ።
የBase64 ልወጣ ሰንጠረዡን በመጠቀም፡
- 38 m ነው
- 58 ነው 6
- 11 L ነው
- 41 p ነው
ይህ ባለ ሁለት ደረጃ ሂደት በኮድ በተቀመጠው አጠቃላይ የሁለትዮሽ ሕብረቁምፊ ላይ ይተገበራል።
የተመዘገበው ውሂብ በትክክል መታተም እና ከማንኛውም የደብዳቤ አገልጋይ መስመር ርዝመት ገደብ እንደማይበልጥ ለማረጋገጥ የመስመር ርዝመቱ ከ76 ቁምፊዎች በታች እንዲሆን አዲስ መስመር ቁምፊዎች ገብተዋል። የአዲሱ መስመር ቁምፊዎች ልክ እንደሌላው ውሂብ የተመሰጠሩ ናቸው።
የBase64 ኢንኮዲንግ አጠቃላይ ዓላማ፣ ፓዲንግ ከመጨመር ጀምሮ ባለ 3-ባይት ሁለትዮሽ ክፍሎችን ለመጠበቅ እስከ Base64 ሠንጠረዥ በመጠቀም ሁለትዮሽ ወደ ጽሑፍ መለወጥ የተላለፈውን የሁለትዮሽ መረጃ ትክክለኛነት መጠበቅ ነው።
Base64 ኢንኮዲንግ ሠንጠረዥ
የሚከተለው ሰንጠረዥ ሁሉንም 64 ቁምፊዎች በBase64 ኢንኮዲንግ ይተረጉማል።
Base64 ኢንኮዲንግ ሠንጠረዥ | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
ዋጋ | ቻር | ዋጋ | ቻር | ዋጋ | ቻር | ዋጋ | ቻር | |||
0 | A | 16 | Q | 32 | g | 48 | ወ | |||
1 | B | 17 | R | 33 | ሸ | 49 | x | |||
2 | C | 18 | S | 34 | i | 50 | y | |||
3 | D | 19 | T | 35 | j | 51 | z | |||
4 | ኢ | 20 | ዩ | 36 | k | 52 | 0 | |||
5 | F | 21 | V | 37 | l | 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 | ኬ | 26 | a | 42 | q | 58 | 6 | |||
11 | L | 27 | b | 43 | r | 59 | 7 | |||
12 | M | 28 | c | 44 | s | 60 | 8 | |||
13 | N | 29 | d | 45 | t | 61 | 9 | |||
14 | ኦ | 30 | e | 46 | u | 62 | + | |||
15 | P | 31 | f | 47 | v | 63 | / |
የመጨረሻውን ጨዋታ በመፍታት ላይ
በመቀየሪያ ሂደቱ መጨረሻ ላይ ችግር ሊኖር ይችላል። በባይት ውስጥ ያለው የዋናው መረጃ መጠን የሶስት ብዜት ከሆነ ሁሉም ነገር በትክክል ይሰራል። ካልሆነ ባዶ ባይት ሊኖር ይችላል። ለትክክለኛ ኢንኮዲንግ በትክክል 3-ባይት ሁለትዮሽ ውሂብ ያስፈልጋል።
መፍትሄው ባለ 3-ባይት ቡድን ለመፍጠር በቂ ባይት በ0 እሴት ማያያዝ ነው። ውሂቡ አንድ ተጨማሪ ባይት ውሂብ ከፈለገ ሁለት እንደዚህ ያሉ እሴቶች ተያይዘዋል፣ አንዱ ለሁለት ተጨማሪ ባይት ይታከላል።
በእርግጥ እነዚህ አርቴፊሻል ዱካ '0'ዎች ከታች ያለውን የኢኮዲንግ ሠንጠረዥ በመጠቀም መመሳጠር አይችሉም። በ65ኛ ቁምፊ መወከል አለባቸው። የBase64 ንጣፍ ቁምፊ እኩል ምልክት (=) ነው እና በኮድ መረጃ መጨረሻ ላይ ተቀምጧል።