چگونه رمزگذاری Base64 کار می کند

اگر اینترنت بزرگراه اطلاعات است، پس مسیر برای ایمیل یک حوض تنگ است. فقط چرخ های بسیار کوچک می توانند عبور کنند.

سیستم حمل و نقل ایمیل فقط برای متن ساده ASCII طراحی شده است. تلاش برای ارسال متن به زبان های دیگر و یا فایل های دلخواه مانند گرفتن کامیون از طریق یخ است.

چگونه کامیون بزرگ را از طریق راوین عبور می کند؟

پس چگونه می توان یک کامیون بزرگ را از طریق یک دره کوچک ارسال کرد؟ شما باید از یک طرف آن را به قطعه برسانید، قطعات را از طریق حیاط حمل کنید و کامیون را از قطعات دیگر در انتهای دیگر بازسازی کنید.

همین اتفاق می افتد زمانی که پیوست فایل را از طریق ایمیل ارسال کنید . در فرآیند شناخته شده به عنوان رمزگذاری داده های باینری به متن ASCII تبدیل می شود، که می تواند در ایمیل بدون مشکل حمل شود. در پایان گیرنده داده ها رمزگشایی می شوند و فایل اصلی بازسازی می شود.

یک روش رمزگذاری داده های دلخواه به عنوان متن ساده ASCII Base64 است. این یکی از تکنیک های استفاده شده توسط استاندارد MIME برای ارسال اطلاعات غیر از متن ساده است .

Base64 به نجات

رمزگذاری Base64 طول می کشد سه بایت، هر کدام از هشت بیت، و آنها را به عنوان چهار کاراکتر قابل چاپ در استاندارد ASCII نشان می دهد. این کار اساسا در دو مرحله انجام می شود.

اولین قدم برای تبدیل سه بایت به چهار رقم شش بیت است. هر شخصیت در استاندارد ASCII شامل هفت بیت است. Base64 فقط از 6 بیت استفاده می کند (مربوط به 2 ^ 6 = 64 کاراکتر) برای اطمینان از اینکه داده های کد شده قابل چاپ و قابل خواندن هستند. هیچ یک از کاراکترهای ویژه موجود در ASCII استفاده نمی شود.

64 کاراکتر (از این رو نام Base64) 10 رقم، 26 حرف کوچک، 26 کاراکتر بزرگ و همچنین '+' و '/' هستند.

اگر برای مثال، سه بایت 155، 162 و 233 باشد، جریان بیت مربوط (و ترسناک) 100110111010001011101001 است که به نوبه خود به مقادیر 6 بیتی 38، 58، 11 و 41 مربوط می شود.

این اعداد در مرحله دوم با استفاده از جدول کدگذاری Base64 به کاراکترهای ASCII تبدیل می شوند. مقادیر 6 بیتی مثال ما به ترتیب ASCII "m6Lp" ترجمه می شود.

این فرایند دو مرحله ای به مجموعه ای از بایت هایی که کدگذاری شده اند اعمال می شود. برای اطمینان از اینکه داده های کد شده را می توان به درستی چاپ کرد و از حد مجاز هر خط ایمیل سرور تجاوز نمی کند، کاراکترهای خطوط جدید برای حفظ طول خط زیر 76 کاراکتر وارد می شوند. کاراکترهای خط جدید مانند همه داده های دیگر رمزگذاری می شوند.

حل بازی Endgame

در پایان فرایند رمزگذاری، ما ممکن است مشکلی ایجاد کنیم. اگر اندازه داده های اصلی در بایت چندین برابر باشد، همه چیز به خوبی کار می کند. اگر اینطور نیست، ممکن است یک یا دو بایت 8 بیتی به پایان برسیم. با این حال، برای رمزگذاری مناسب، باید دقیقا سه بایت داشته باشیم.

راه حل این است که بایت های با مقدار با مقدار '0' را برای اضافه کردن یک گروه 3 بایت اضافه کنید. دو تا از این مقادیر اضافه شده اند اگر ما یک بایت اضافی داده داشته باشیم، یکی برای دو بایت اضافی اضافه شده است.

البته، این صفر مصنوعی '0' را نمی توان با استفاده از جدول کدگذاری در زیر کد گذاری کرد. آنها باید توسط شخصیت 65 نشان داده شوند.

شخصیت padding Base64 '=' است. به طور طبیعی، آن را تنها در پایان داده های کد شده ممکن است ظاهر شود.

Base64 Encoding Table

ارزش کاراکتر ارزش کاراکتر ارزش کاراکتر ارزش کاراکتر
0 الف 16 Q 32 g 48 w
1 ب 17 ر 33 ساعت 49 ایکس
2 سی 18 S 34 من 50 ی
3 د 19 T 35 ج 51 z
4 E 20 U 36 ک 52 0
5 F 21 V 37 ل 53 1
6 G 22 W 38 متر 54 2
7 ه 23 ایکس 39 n 55 3
8 من 24 ی 40 o 56 4
9 ج 25 Z 41 پ 57 5
10 کی 26 a 42 q 58 6
11 ل 27 ب 43 ر 59 7
12 م 28 ج 44 s 60 8
13 N 29 د 45 t 61 9
14 O 30 e 46 تو 62 +
15 پ 31 f 47 v 63 /