របៀបការសរសេរកូដ Base64 ដំណើរការ

ប្រសិនបើអ៊ិនធឺណេតគឺជាផ្លូវហាយវេនោះផ្លូវសម្រាប់អ៊ីម៉ែលគឺជាច្រាំងតូចចង្អៀតមួយ។ មានតែរទេះតូចៗទេដែលអាចឆ្លងកាត់។

ប្រព័ន្ធដឹកជញ្ជូនអ៊ីម៉ែលត្រូវបានរចនាឡើងសម្រាប់អត្ថបទ ASCII ធម្មតាតែប៉ុណ្ណោះ។ ការព្យាយាមផ្ញើអត្ថបទជាភាសាផ្សេងទៀតឬឯកសារបំពានគឺដូចជាការបើកឡានតាមរូងភ្នំ។

តើឡានធំចូលតាមរូងភ្នំយ៉ាងដូចម្តេច?

បន្ទាប់មកតើអ្នកបញ្ជូនឡានដឹកទំនិញធុនធំតាមរូងតូចមួយយ៉ាងដូចម្តេច? អ្នកត្រូវយកវាទៅជាបំណែកនៅចុងម្ខាងដឹកជញ្ជូនបំណែកឆ្លងកាត់ជ្រលងភ្នំហើយសង់ឡានឡើងវិញពីបំណែកនៅម្ខាងទៀត។

ដូចគ្នានេះដែរកើតឡើងនៅពេលដែលអ្នកផ្ញើ ឯកសារភ្ជាប់តាមអ៊ីមែល ។ នៅក្នុងដំណើរការដែលគេស្គាល់ថាជាការអ៊ិនកូដទិន្នន័យប្រព័ន្ធគោលពីរត្រូវបានប្លែងទៅជាអត្ថបទ ASCII ដែលអាចត្រូវបានដឹកជញ្ជូនតាមអ៊ីម៉ែលដោយគ្មានបញ្ហា។ នៅចុងបញ្ចប់នៃអ្នកទទួលទិន្នន័យត្រូវបានបម្លែងហើយឯកសារដើមត្រូវបានស្ថាបនាឡើងវិញ។

វិធីសាស្រ្តមួយនៃការអ៊ិនកូដទិន្នន័យតាមចិត្តជាអត្ថបទ ASCII ធម្មតាគឺ Base64 ។ វាគឺជាបច្ចេកទេសមួយដែលបានប្រើដោយ ស្តង់ដារ MIME ដើម្បីផ្ញើទិន្នន័យក្រៅពី អត្ថបទធម្មតា

Base64 ទៅជួយសង្គ្រោះ

ការអ៊ិនកូដ Base64 ត្រូវចំណាយពេលបីបៃដែលនីមួយៗមានប៊ីត 8 និងតំណាងឱ្យវាជាតួអក្សរអាចបោះពុម្ពបានបួនក្នុងស្តង់ដារ ASCII ។ វាធ្វើបែបនោះក្នុងជំហានសំខាន់ពីរ។

ជំហានដំបូងគឺត្រូវបម្លែងបីបៃទៅបួនលេខប្រាំមួយប៊ីត។ តួអក្សរនីមួយ ៗ ក្នុងស្តង់ដា ASCII មានប្រាំពីរប៊ីត។ Base64 ប្រើតែ 6 ប៊ីត (ដែលត្រូវគ្នានឹង 2 ^ 6 = 64 តួអក្សរ) ដើម្បីធានាបាននូវទិន្នន័យដែលបានអ៊ិនកូដអាចបោះពុម្ពបាននិងអាចអានបានដោយមនុស្ស។ គ្មានតួអក្សរពិសេសដែលអាចរកបានក្នុង ASCII ។

64 តួអក្សរ (ហេតុនេះឈ្មោះ Base64) មាន 10 ខ្ទង់តួអក្សរតូច 26 និងតួអក្សរធំ ៗ 26 ព្រមទាំង '+' និង '/' ។

ប្រសិនបើឧទាហរណ៍បីបៃគឺ 155 162 និង 233 ស្ទ្រីមប៊ីតដែលត្រូវគ្នា (និងគួរឱ្យភ័យខ្លាច) គឺ 100110111010001011101001 ដែលត្រូវគ្នាទៅនឹងតម្លៃ 6 ប៊ីត 38 58 11 និង 41 ។

លេខទាំងនេះត្រូវបានបម្លែងទៅតួអក្សរ ASCII នៅក្នុងជំហានទីពីរដោយប្រើតារាងការអ៊ិនកូដ Base64 ។ តម្លៃ 6 ប៊ីតនៃឧទាហរណ៍របស់យើងបកប្រែទៅលំដាប់ ASCII "m6Lp" ។

ដំណើរការពីរជំហាននេះត្រូវបានអនុវត្តទៅលំដាប់បៃដែលត្រូវបានអ៊ិនកូដ។ ដើម្បីធានាថាទិន្នន័យដែលបានអ៊ិនកូដអាចត្រូវបានបោះពុម្ពយ៉ាងត្រឹមត្រូវហើយមិនលើសពីដែនកំណត់ប្រវែងបន្ទាត់នៃម៉ាស៊ីនមេទេនោះតួអក្សរបន្ទាត់ថ្មីត្រូវបានបញ្ចូលដើម្បីរក្សាប្រវែងបន្ទាត់ក្រោម 76 តួអក្សរ។ តួអក្សរបន្ទាត់ថ្មីត្រូវបានអ៊ិនកូដដូចទិន្នន័យផ្សេងទៀតទាំងអស់។

ដោះស្រាយការប្រកួតបញ្ចប់

នៅចុងបញ្ចប់នៃដំណើរការអ៊ីនកូដយើងអាចមានបញ្ហា។ ប្រសិនបើទំហំនៃទិន្នន័យដើមគិតជាបៃគឺជាចំនួនច្រើននៃបីអ្វីគ្រប់យ៉ាងដំណើរការល្អ។ បើមិនដូច្នោះទេយើងអាចបញ្ចប់ដោយ 1 ប៊ីត 8 ប៊ីត។ ចំពោះការអ៊ិនកូដត្រឹមត្រូវយើងត្រូវការយ៉ាងពិតប្រាកដបីបៃ។

ដំណោះស្រាយគឺបន្ថែមបៃបញ្ចូលគ្នាដោយតម្លៃ '0' ដើម្បីបង្កើតក្រុម 3 បៃ។ តម្លៃទាំងពីរនេះត្រូវបានបន្ថែមខាងចុងប្រសិនបើយើងមានទិន្នន័យបៃមួយបន្ថែមទៀតមួយត្រូវបានបន្ថែមសម្រាប់បៃពីរបន្ថែមទៀត។

ជាការពិតណាស់, '0' របស់សិប្បនិម្មិតទាំងនេះមិនអាចត្រូវបានអ៊ិនកូដដោយប្រើតារាងអ៊ីនកូដខាងក្រោមទេ។ ពួកគេត្រូវតែត្រូវបានតំណាងដោយតួអក្សរទី 65 ។

អក្សរជំនួស Base64 គឺ '=' ។ ជាធម្មតាវាអាចលេចឡើងនៅចុងបញ្ចប់នៃទិន្នន័យដែលបានអ៊ិនកូដ។

តារាងការអ៊ិនកូដ Base64

តម្លៃ ឆា តម្លៃ ឆា តម្លៃ ឆា តម្លៃ ឆា
0 A 16 Q 32 g 48 w
1 17 R 33 ម៉ោង 49 x
2 C 18 S 34 ខ្ញុំ 50 y
3 19 T 35 j 51 z
4 អ៊ី 20 U 36 K 52 0
5 F 21 វី 37 លីត្រ 53 1
6 G 22 វិ 38 ម៉ែត្រ 54 2
7 H 23 X 39 n 55 3
8 ខ្ញុំ 24 Y 40 o 56 4
9 J 25 Z 41 ទំ 57 5
10 K 26 មួយ 42 q 58 6
11 លីត្រ 27 43 r 59 7
12 M 28 44 s 60 8
13 លេខ 29 45 t 61 9
14 O 30 អ៊ី 46 u 62 +
15 P 31 f 47 v 63 /