ប្រសិនបើអ៊ិនធឺណេតគឺជាផ្លូវហាយវេនោះផ្លូវសម្រាប់អ៊ីម៉ែលគឺជាច្រាំងតូចចង្អៀតមួយ។ មានតែរទេះតូចៗទេដែលអាចឆ្លងកាត់។
ប្រព័ន្ធដឹកជញ្ជូនអ៊ីម៉ែលត្រូវបានរចនាឡើងសម្រាប់អត្ថបទ 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" ។
- 155 -> 10011011
- 162 -> 10100010
- 233 -> 11101001
- 100110 -> 38
- 111010 -> 58
- 001011 -> 11
- 101001 -> 41
- 38 -> ម៉ែត្រ
- 58 -> 6
- 11 -> លី
- 41 -> ទំ
ដំណើរការពីរជំហាននេះត្រូវបានអនុវត្តទៅលំដាប់បៃដែលត្រូវបានអ៊ិនកូដ។ ដើម្បីធានាថាទិន្នន័យដែលបានអ៊ិនកូដអាចត្រូវបានបោះពុម្ពយ៉ាងត្រឹមត្រូវហើយមិនលើសពីដែនកំណត់ប្រវែងបន្ទាត់នៃម៉ាស៊ីនមេទេនោះតួអក្សរបន្ទាត់ថ្មីត្រូវបានបញ្ចូលដើម្បីរក្សាប្រវែងបន្ទាត់ក្រោម 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 | / |