UltKit

تبدیل JSON به Base64

فایل JSON را به یک خط متن Base64 تبدیل کنید که در متغیرهای محیطی، فیلدهای YAML و بدنهٔ درخواست‌های API، جایی که گیومه، آکولاد و شکست خط دردسرساز می‌شوند، سالم می‌ماند. با رمزگشایی آن دقیقاً همان بایت‌ها بازگردانده می‌شوند.

مبدل داده

یا فایل‌های CSV, TSV, TXT … را اینجا رها کنید ·

حداکثر 95 MB برای هر فایل· تا 20 فایل· حذف پس از 30 دقیقه

خروجی

فایل‌ها روی سرورهای ما پردازش می‌شوند و پس از 30 دقیقه حذف می‌شوند.

نحوه استفاده از این ابزار

  1. 1

    فایل JSON را بارگذاری کنید

    یک فایل .json، .jsonl یا .ndjson اضافه کنید، مثلاً کلید service account یا یک فایل پیکربندی. در هر دسته حداکثر 20 فایل و هر کدام تا 95 MB مجاز است.

  2. 2

    دربارهٔ پیشوند تصمیم بگیرید

    Base64 ساده انتخاب شده است. فقط اگر متن را در یک ویژگی HTML یا CSS قرار می‌دهید که آدرس data: می‌خواهد، گزینهٔ پیشوند Data URI را در تنظیمات پیشرفته روشن کنید.

  3. 3

    انکود و کپی کنید

    روی تبدیل به Base64 text بزنید، نتیجه را دانلود کنید و رشته را در محل نگهداری رمزها، فایل manifest یا بدنهٔ درخواست جایگذاری کنید.

کدگذاری JSON به Base64 داده را تغییر نمی‌دهد؛ فقط آن را به حروف و رقم ساده تبدیل می‌کند تا از مسیرهایی که آکولاد، گیومه و خط جدید را خراب می‌کنند عبور کند.

چرا فایل JSON را به Base64 انکود کنیم

رایج‌ترین مورد فایل اعتبارنامه است. ارائه‌دهندهٔ ابری کلید service account را به‌صورت فایل JSON می‌دهد و سامانهٔ CI، داشبورد میزبانی یا پلتفرم کانتینر شما برای رمزها فقط یک فیلد تک‌خطی دارد. جایگذاری JSON خام با اولین خط جدید یا اولین گیومهٔ بدون escape خراب می‌شود. با کدگذاری Base64، همان کلید یک رشتهٔ پیوسته می‌شود که برنامه هنگام راه‌اندازی آن را رمزگشایی می‌کند.

ریشهٔ خود Base64 به ایمیل برمی‌گردد: MIME که در سال 1996 در RFC 2045 تعریف شد از آن استفاده کرد تا پیوست‌ها از سرورهای ایمیلی که فقط متن 7 بیتی حمل می‌کردند عبور کنند. الفبای آن بعدها در سال 2006 جداگانه در RFC 4648 استاندارد شد. هزینه‌اش حجم است، چون هر 3 بایت به 4 نویسه تبدیل می‌شود. برای عکس و سایر فایل‌های باینری، تبدیل عکس به Base64 همین کدگذاری را با data URI متناسب انجام می‌دهد. اگر ابزار مقصد به‌جای فیلد Base64، YAML می‌خواند، شاید تبدیل JSON به YAML کافی باشد.

نمونهٔ تبدیل JSON به Base64

JSON فشرده {"env":"prod","retries":3} و کدگذاری Base64 آن
{"env":"prod","retries":3}

eyJlbnYiOiJwcm9kIiwicmV0cmllcyI6M30=

کجا JSON انکودشده با Base64 لازم است

جاهایی که JSON را فقط به‌صورت Base64 می‌پذیرند
سازمانالزاممنبع
Kubernetes Secretsهر مقدار زیر data باید Base64 باشد؛ برای استفاده از فایل کلید JSON ابتدا آن را کدگذاری کنید.kubernetes.io
GitHub REST APIنقطه‌پایانی ایجاد یا به‌روزرسانی محتوای فایل انتظار دارد فایل، از جمله فایل .json، به‌صورت Base64 در content ارسال شود.docs.github.com
JSON Web Tokens (RFC 7519)header و claims در JSON هرکدام با base64url کدگذاری و با نقطه به هم متصل می‌شوند.—
پیوست ایمیل (MIME)پیوست .json با کدگذاری انتقال Base64 ارسال می‌شود تا از سرورهای ایمیل فقط‌متنی عبور کند.—
Base64کدگذاری Base 64 · کدگذاری RFC 4648
روشی برای نوشتن هر بایتی با 64 نویسهٔ امن: A–Z، a–z، 0–9، + و /، با = به‌عنوان padding. هر 3 بایت ورودی به 4 نویسه تبدیل می‌شود، پس متن حدود یک‌سوم از فایل بلندتر است. این روش برگشت‌پذیر است و کلیدی ندارد؛ بنابراین قالب انتقال است، نه اقدام امنیتی.

مشخصات فرمت‌های JSON و Base64

JSON

نشانه‌گذاری شیء جاوااسکریپت (JSON)

JSON یک فرمت متنی سبک برای داده‌های ساختاریافته است که Douglas Crockford در اوایل دهه 2000 آن را رایج کرد و با عنوان RFC 8259 و ECMA-404 استاندارد شد. اشیا، آرایه‌ها، رشته‌ها، اعداد، مقادیر بولی و null را با نحوی ساده و خوانا نمایش می‌دهد. این فرمت پیش‌فرض APIهای وب، فایل‌های پیکربندی و تبادل داده بین برنامه‌ها در تقریباً همه زبان‌های برنامه‌نویسی است. توضیحات، تاریخ یا طرحواره ندارد و فایل‌های بزرگ تودرتو بدون نمایشگر سخت خوانده می‌شوند.

فشرده‌سازی
–
شفافیت
–
انیمیشن
–
سال معرفی
2001 · Douglas Crockford
مبدل JSON

BASE64

متن کدگذاری‌شده Base64

Base64 یک کدگذاری است که در RFC 4648 تعریف شده و هر داده دودویی را به رشته‌ای از 64 نویسه متنی امن تبدیل می‌کند. برای جاسازی تصویر در HTML و CSS به‌صورت data URI، پیوست کردن فایل به ایمیل و ارسال داده دودویی در JSON یا XML استفاده می‌شود. کدگذاری کاملاً برگشت‌پذیر است اما حجم داده را حدود 33% بیشتر می‌کند. Base64 رمزگذاری نیست و امنیتی ندارد؛ هر کسی می‌تواند آن را رمزگشایی کند.

فشرده‌سازی
بدون اتلاف
شفافیت
–
انیمیشن
–
سال معرفی
–
مبدل BASE64

JSON وقتی به Base64 کدگذاری می‌شود که یک دادهٔ ساختاریافته باید داخل یک فیلد رشته‌ای قرار بگیرد که گیومه و خط جدید خام را نمی‌پذیرد: رمز CI، manifest در Kubernetes، فیلد content یک API یا مقدار یک header.

پرسش‌های تبدیل JSON به Base64

آیا JSON انکودشده با Base64 رمزنگاری شده است؟

خیر. Base64 فقط یک کدگذاری است و هر کسی با یک دستور می‌تواند آن را رمزگشایی کند. خود مستندات Kubernetes هشدار می‌دهد که Secretها به‌طور پیش‌فرض فقط با Base64 کدگذاری و بدون رمزنگاری ذخیره می‌شوند؛ بنابراین از رشتهٔ کدگذاری‌شده دقیقاً مثل کلید اصلی محافظت کنید.

برای توکن یا URL به Base64 نیاز دارم یا base64url؟

Base64 استاندارد، مثل خروجی همین‌جا، از + و / استفاده می‌کند و با = پر می‌شود. JWTها و پارامترهای URL از الفبای base64url در RFC 4648 استفاده می‌کنند که به‌جای آن‌ها - و _ می‌گذارد و معمولاً padding را حذف می‌کند. اگر مقصد base64url می‌خواهد، این سه نویسه را جایگزین کنید.

آیا باید JSON را پیش از انکود کردن فشرده (minify) کنم؟

معمولاً بله. فاصله، تورفتگی و خط جدید هم مثل بقیه بایت هستند و هر 3 بایت به 4 نویسه در خروجی تبدیل می‌شود. اگر پیش از کدگذاری، پیکربندی خوانا را فشرده کنید، مثلاً با jq -c، رشتهٔ خروجی به همان نسبت کوتاه‌تر می‌شود.

چگونه رشته را دوباره به JSON رمزگشایی کنم؟

در macOS یا Linux دستور base64 --decode را اجرا کنید، در PowerShell از [Convert]::FromBase64String استفاده کنید و در مرورگر خروجی atob را به TextDecoder بدهید تا نویسه‌های UTF-8 درست بازگردند.

چرا kubectl خطای illegal base64 data می‌دهد؟

مقدار زیر data در manifest یک Secret باید Base64 معتبر و در یک خط باشد. این خطا معمولاً یعنی هنگام جایگذاری یک خط جدید وارد شده یا JSON ساده زیر data گذاشته شده است. مقادیر ساده باید زیر stringData بروند و Kubernetes خودش آن‌ها را کدگذاری می‌کند.

آیا انکود کردن چیزی را در JSON من تغییر می‌دهد؟

خیر. Base64 بایت‌ها را بدون اتلاف به متن و برعکس تبدیل می‌کند؛ بنابراین کلیدها، مقادیر، نویسه‌های دارای اعراب و حتی byte order mark ابتدای فایل هنگام رمزگشایی دقیقاً بازیابی می‌شوند.