ວິທີການ Encoding Base64 ເຮັດວຽກ

ຖ້າອິນເຕີເນັດແມ່ນເສັ້ນທາງຂໍ້ມູນ, ຫຼັງຈາກນັ້ນເສັ້ນທາງສໍາລັບອີເມລ໌ແມ່ນຂົວແຄບ. ພຽງແຕ່ລົດເຂັນທີ່ມີຂະຫນາດນ້ອຍໆສາມາດຜ່ານໄດ້.

ລະບົບການຂົນສົ່ງຂອງອີເມລ໌ແມ່ນອອກແບບສໍາລັບຂໍ້ຄວາມ ASCII ທົ່ງພຽງເທົ່ານັ້ນ. ການພະຍາຍາມທີ່ຈະສົ່ງຂໍ້ຄວາມໃນພາສາອື່ນຫຼືໄຟລ໌ທີ່ເປັນທາງເລືອກແມ່ນຄ້າຍຄືກັບລົດທີ່ຜ່ານທາງຮ່ອມພູ.

ລົດໃຫຍ່ໃຫຍ່ຈະໄປຜ່ານ Ravine ໄດ້ແນວໃດ?

ຫຼັງຈາກນັ້ນ, ວິທີທີ່ທ່ານສົ່ງລົດໃຫຍ່ໂດຍຜ່ານ ravine ຂະຫນາດນ້ອຍ? ທ່ານຕ້ອງໃຊ້ເວລາມັນໃນສິ້ນສຸດ, ການຂົນສົ່ງຕ່ອນຜ່ານ ravine ໄດ້, ແລະການກໍ່ສ້າງລົດຈາກຕ່ອນໃນອີກດ້ານຫນຶ່ງ.

ການເກີດຂື້ນໃນເວລາທີ່ທ່ານສົ່ງ ເອກະສານໄຟລ໌ແນບຜ່ານອີເມວ . ໃນຂະບວນການທີ່ເອີ້ນວ່າການເຂົ້າລະຫັດຂໍ້ມູນລະບົບປະຕິບັດການຖືກປ່ຽນເປັນຂໍ້ຄວາມ ASCII ຊຶ່ງສາມາດຖືກສົ່ງຜ່ານອີເມວໂດຍບໍ່ມີບັນຫາ. ໃນຂໍ້ສຸດທ້າຍຂອງຜູ້ຮັບ, ຂໍ້ມູນຈະຖືກຖອດອອກແລະໄຟລ໌ຕົ້ນສະບັບຖືກສ້າງຂຶ້ນໃຫມ່.

ຫນຶ່ງໃນວິທີການເຂົ້າລະຫັດຂໍ້ມູນທີ່ເປັນຕົວຕົນເປັນຂໍ້ຄວາມ ASCII ທໍາມະດາແມ່ນ Base64. ມັນແມ່ນຫນຶ່ງໃນເຕັກນິກທີ່ເຮັດວຽກໂດຍ ມາດຕະຖານ MIME ເພື່ອສົ່ງຂໍ້ມູນອື່ນນອກເຫນືອຈາກ ຂໍ້ຄວາມທໍາມະດາ .

Base64 ກັບການກູ້ໄພ

ການເຂົ້າລະຫັດ Base64 ໃຊ້ເວລາສາມ bytes, ແຕ່ລະປະກອບດ້ວຍແປດບິດ, ແລະສະແດງໃຫ້ພວກເຂົາເປັນສີ່ຕົວອັກສອນທີ່ພິມໄດ້ໃນມາດຕະຖານ ASCII. ມັນເຮັດໃນສອງຂັ້ນຕອນ.

ຂັ້ນຕອນທໍາອິດແມ່ນການປ່ຽນສາມ bytes ໃຫ້ສີ່ຈໍານວນ 6 ບິດ. ແຕ່ລະຕົວອັກສອນໃນມາດຕະຖານ ASCII ປະກອບດ້ວຍເຈັດບິດ. Base64 ໃຊ້ 6 ບິດ (ເທົ່າກັບ 2 6 = 64 ຕົວອັກສອນ) ເພື່ອໃຫ້ຂໍ້ມູນທີ່ຖືກເຂົ້າລະຫັດສາມາດພິມໄດ້ແລະສາມາດອ່ານໄດ້ກັບມະນຸດ. ບໍ່ມີຕົວອັກສອນພິເສດທີ່ມີຢູ່ໃນ ASCII.

ຕົວອັກສອນ 64 ຕົວ (ດັ່ງນັ້ນ Base64 ຊື່) ມີ 10 ຕົວເລກ, 26 ຕົວອັກສອນຕົວນ້ອຍ, 26 ຕົວອັກສອນຕົວອັກສອນລວມທັງ '+' ແລະ '/'.

ຖ້າຕົວຢ່າງ, ສາມ bytes ແມ່ນ 155, 162 ແລະ 233, ນ້ໍາບິດທີ່ສອດຄ້ອງກັນ (ແລະຢ້ານກົວ) ແມ່ນ 100110111010001011101001, ເຊິ່ງກົງກັນຂ້າມກັບ 6 ບິດ 38, 58, 11 ແລະ 41.

ຕົວເລກເຫລົ່ານີ້ຖືກປ່ຽນເປັນຕົວອັກສອນ ASCII ໃນຂັ້ນຕອນທີສອງໂດຍໃຊ້ຕາຕະລາງການເຂົ້າລະຫັດ Base64. ມູນຄ່າ 6 ບິດຂອງຕົວຢ່າງຂອງພວກເຮົາແປເປັນລໍາດັບ ASCII "m6Lp".

ຂັ້ນຕອນສອງຂັ້ນຕອນນີ້ຖືກນໍາໃຊ້ກັບລໍາດັບຂອງ bytes ທັງຫມົດທີ່ຖືກ encoded. ເພື່ອໃຫ້ແນ່ໃຈວ່າຂໍ້ມູນທີ່ຖືກເຂົ້າລະຫັດສາມາດຖືກພິມຢ່າງຖືກຕ້ອງແລະບໍ່ເກີນຂອບເຂດເສັ້ນຍາວຂອງເຄື່ອງແມ່ຂ່າຍເມລ, ຕົວອັກສອນໃຫມ່ຈະຖືກໃສ່ເພື່ອຮັກສາຄວາມຍາວຂອງເສັ້ນຂ້າງລຸ່ມ 76 ຕົວ. ຕົວອັກສອນໃຫມ່ໄດ້ຖືກເຂົ້າລະຫັດເຊັ່ນຂໍ້ມູນອື່ນໆທັງຫມົດ.

ການແກ້ໄຂ Endgame

ໃນຕອນທ້າຍຂອງຂະບວນການເຂົ້າລະຫັດ, ພວກເຮົາອາດຈະເປັນບັນຫາ. ຖ້າຂະຫນາດຂອງຂໍ້ມູນຕົ້ນສະບັບໃນ bytes ແມ່ນຫຼາຍຂອງສາມ, ທຸກສິ່ງທຸກຢ່າງເຮັດວຽກດີ. ຖ້າບໍ່ແມ່ນ, ພວກເຮົາອາດຈະສິ້ນສຸດດ້ວຍຫນຶ່ງຫຼືສອງໄບ 8 ບິດ. ສໍາລັບການເຂົ້າລະຫັດທີ່ເຫມາະສົມ, ພວກເຮົາຕ້ອງການຢ່າງແທ້ຈິງສາມ bytes, ຢ່າງໃດກໍຕາມ.

ການແກ້ໄຂແມ່ນເພື່ອປ້ອນລົງ bytes ທີ່ມີມູນຄ່າຂອງ '0' ເພື່ອສ້າງກຸ່ມ 3 byte. ສອງມູນຄ່າດັ່ງກ່າວແມ່ນເພີ່ມເຕີມຖ້າພວກເຮົາມີຫນຶ່ງໄບຕ໌ເພີ່ມເຕີມຂອງຂໍ້ມູນ, ຫນຶ່ງແມ່ນເພີ່ມເຕີມສໍາລັບສອງ bytes ພິເສດ.

ແນ່ນອນ, ເຫຼົ່ານີ້ trailing ປອມ '0' ບໍ່ສາມາດໄດ້ຮັບການ encoded ໂດຍນໍາໃຊ້ຕາຕະລາງການເຂົ້າລະຫັດຂ້າງລຸ່ມນີ້. ພວກເຂົາຕ້ອງໄດ້ຮັບການສະແດງໂດຍລັກສະນະທີ່ 65.

ຕົວອັກສອນ padding Base64 ແມ່ນ '='. ຕາມທໍາມະດາ, ມັນສາມາດປາກົດຢູ່ໃນຕອນທ້າຍຂອງຂໍ້ມູນທີ່ຖືກເຂົ້າລະຫັດເທົ່ານັ້ນ.

Base64 Encoding Table

ມູນຄ່າ Char ມູນຄ່າ Char ມູນຄ່າ Char ມູນຄ່າ Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 ຂ້ອຍ 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 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 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /