# رمزگذاری / رمزگشایی

URL: https://discuvr.org/encode-decode/?hl=fa
Last updated: 2026-11-07
MCP tool: `encode_decode_text`

Base64، Base64URL، کدگذاری درصدی URL، موجودیت‌های HTML و هگز را هم‌زمان با تایپ رمزگذاری یا رمزگشایی کنید. UTF-8 کامل، اعلام نبودِ padding، بدون ذخیره.

یک توکن در لاگ، یک رشته پرس‌وجو در ریدایرکت، یک ایمیل پر از &amp;: متن رمزگذاری‌شده در کار همه‌جا پیدا می‌شود. آن را اینجا بچسبانید، قالب را انتخاب کنید و نتیجه رمزگذاری یا رمزگشایی را همزمان با تایپ ببینید.

## عملکرد

- Base64، Base64URL (به سبک JWT، بدون padding)، کدگذاری درصدی URL، موجودیت‌های HTML و هگز.
- UTF-8 کامل: حروف فارسی، هندی، چینی و ایموجی در رفت و برگشت سالم می‌مانند.
- padding جاافتاده Base64 اضافه و اعلام می‌شود و هرگز بی‌صدا اصلاح نمی‌شود.
- بایت‌هایی که متن نیستند به جای نویسه‌های درهم به صورت هگز نشان داده می‌شوند.
- با یک کلیک خروجی را دوباره ورودی کنید و جهت را برعکس کنید.

## نحوه کار

1. قالب را انتخاب کنید و مشخص کنید رمزگذاری یا رمزگشایی.
2. متن خود را بچسبانید؛ نتیجه همزمان با تایپ به‌روز می‌شود.
3. خروجی را کپی کنید یا آن را ورودی بعدی قرار دهید.

## مثال عملی: خواندن یک JWT

یک JSON Web Token سه بخش Base64URL است که با نقطه به هم وصل شده‌اند: سرآیند، محتوا (payload) و امضا. بخش میانی را بچسبانید، Base64URL را انتخاب و رمزگشایی کنید تا ادعاهای JSON مانند شناسه کاربر و زمان انقضای exp را ببینید (یک تایم‌استمپ یونیکس که با مبدل تایم‌استمپ یونیکس خوانده می‌شود). رمزگشایی یعنی خواندن، نه تأیید: هر کسی می‌تواند محتوای JWT را بخواند و فقط بررسی امضا روی سرور ثابت می‌کند که تغییر نکرده است.

## مواردی که در کار دردسر می‌سازند

Base64 بدون padding، که برخی سیستم‌ها برای صرفه‌جویی در فضا حذفش می‌کنند، در رمزگشاهای سخت‌گیر خطا می‌دهد؛ این ابزار علامت‌های = جاافتاده را اضافه می‌کند و به شما می‌گوید. بسیاری از سرورها + را در رشته پرس‌وجو فاصله می‌خوانند، پس مقدار Base64 که بدون کدگذاری در لینک چسبانده شود خراب می‌رسد؛ آن را به عنوان جزء URL کدگذاری کنید یا از Base64URL استفاده کنید. متنی که دو بار رمزگذاری شده به شکل %2520 یا &amp;amp; دیده می‌شود و باید دو بار رمزگشایی شود.

## هر رمزگشا چه ورودی‌ای می‌پذیرد

رمزگشایی Base64 فاصله‌ها و شکست خط را نادیده می‌گیرد، پس مقداری که مثل یک ایمیل در چند خط شکسته شده، همان‌طور که چسبانده شده رمزگشایی می‌شود. Base64URL علامت‌های + و / را هم می‌پذیرد، ولی Base64 معمولی - و _ را رد می‌کند، پس بخشی از یک JWT به گزینه Base64URL نیاز دارد. رمزگشایی hex از فاصله، دونقطه، ویرگول، خط تیره و پیشوند 0x می‌گذرد، پس هم 48:65:6c:6c:6f و هم 0x48 0x65 کار می‌کنند. رمزگشایی URL علامت + را به فاصله تبدیل می‌کند، پس یک علامت جمع واقعی باید به شکل %2B برسد. رمزگذاری HTML پنج نویسه & < > " و ' را escape می‌کند؛ رمزگشایی HTML همه موجودیت‌های نام‌دار HTML5 مانند &nbsp; و &hellip; و موجودیت‌های عددی مانند &#8377; برای نماد روپیه را می‌شناسد.

## نمونه‌های حل‌شده: هر قالب چه خروجی می‌دهد

رمزگذاری URL در اینجا یک مقدار را رمزگذاری می‌کند، مثلا یک پارامتر پرس‌وجو، پس همه نویسه‌های رزروشده escape می‌شوند: https://example.com/a b?x=1&y=2 به https%3A%2F%2Fexample.com%2Fa%20b%3Fx%3D1%26y%3D2 تبدیل می‌شود. فقط مقداری را که در پیوند می‌گذارید رمزگذاری کنید، نه کل پیوند را. متن خارج از ASCII به صورت بایت‌های UTF-8 آن رمزگذاری می‌شود: café ₹ به caf%C3%A9%20%E2%82%B9 تبدیل می‌شود و هگز همان بایت‌ها را نشان می‌دهد، é به صورت c3 a9 و ₹ به صورت e2 82 b9. Base64 عبارت user:pass برابر dXNlcjpwYXNz است، همان مقداری که سرآیند HTTP Basic Authorization حمل می‌کند (RFC 7617)؛ به همین دلیل هر کسی آن سرآیند را ببیند می‌تواند گذرواژه را بخواند.

## سوالات

**چرا متن رمزگشایی‌شده من نویسه‌های عجیبی مثل Ã© نشان می‌دهد؟**

بایت‌ها UTF-8 بوده‌اند اما جایی پیش از رمزگذاری به صورت Latin-1 یا Windows-1252 خوانده شده‌اند. رمزگشایی اینجا بایت‌ها را همان‌طور که هستند نشان می‌دهد؛ اصلاح باید در سیستمی انجام شود که آن‌ها را تولید کرده است.

**آیا می‌توانم یک فایل کامل را رمزگشایی کنم؟**

تا 200,000 نویسه متن بچسبانید. برای فایل‌های باینری مانند تصویر، بایت‌های رمزگشایی‌شده به جای تبدیل به فایل دانلودی به صورت هگز نشان داده می‌شوند.

**آیا Base64 رمزنگاری است؟**

خیر. Base64 فقط شیوه نوشتن بایت‌ها را تغییر می‌دهد تا از سیستم‌هایی که متن ساده انتظار دارند سالم عبور کنند. هر کسی می‌تواند آن را رمزگشایی کند؛ هرگز از آن برای پنهان کردن رمز عبور یا راز استفاده نکنید.

**تفاوت Base64 و Base64URL چیست؟**

Base64URL به جای "+" و "/" از "-" و "_" استفاده می‌کند و معمولاً padding "=" را حذف می‌کند تا نتیجه در URL و نام فایل امن باشد. JSON Web Tokenها از آن استفاده می‌کنند.

**آیا متن من ذخیره می‌شود؟**

خیر. در همان درخواست تبدیل و برگردانده می‌شود و هرگز در پایگاه داده یا لاگ نوشته نمی‌شود.

**چرا خروجی رمزگذاری URL با encodeURIComponent در JavaScript فرق دارد؟**

این ابزار نویسه‌های ! ' ( ) و * را هم escape می‌کند که encodeURIComponent دست‌نخورده می‌گذارد، پس it's (50%) off! به it%27s%20%2850%25%29%20off%21 تبدیل می‌شود. هر دو شکل به همان متن رمزگشایی می‌شوند و escape کردن این نویسه‌ها درون مقدار پرس‌وجو همیشه بی‌خطر است. فاصله به %20 تبدیل می‌شود نه +؛ شکل + از رمزگذاری فرم‌های HTML می‌آید و رمزگشای اینجا هر دو را می‌خواند.

**چطور متن را در خط فرمان به Base64 رمزگذاری یا از آن رمزگشایی کنم؟**

در Linux یا Mac دستور echo -n 'Hello, World' | base64 خروجی SGVsbG8sIFdvcmxk را می‌دهد و echo 'SGVsbG8sIFdvcmxk' | base64 --decode آن را به متن برمی‌گرداند. اگر -n را ننویسید، echo یک خط جدید اضافه می‌کند که آن هم رمزگذاری می‌شود و نتیجه SGVsbG8sIFdvcmxkCg== می‌شود؛ رایج‌ترین دلیل اینکه دو ابزار نتیجه متفاوت می‌دهند. در PowerShell دستور [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Hello, World')) رمزگذاری و [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8sIFdvcmxk')) رمزگشایی می‌کند. این صفحه دقیقا همان نویسه‌هایی را که می‌چسبانید با UTF-8 رمزگذاری می‌کند و خط جدیدی اضافه نمی‌کند.

**چطور یک تصویر Base64 یا data URI را رمزگشایی کنم؟**

فقط بخش بعد از ویرگول را بچسبانید: در data:image/png;base64,iVBORw0KGgo... این بخش iVBORw0KGgo... است، چون پیشوند data:image/png;base64, خودش Base64 نیست و کل رشته رد می‌شود. Base64 و Decode را انتخاب کنید. بایت‌هایی که متن نیستند به جای نمایش به شکل تصویر به صورت hex نشان داده می‌شوند و همین برای فهمیدن نوع فایل کافی است: PNG با 89 50 4e 47، JPEG با ff d8 ff و یک فایل کامل .docx، .xlsx یا فایل دیگر مبتنی بر ZIP با 50 4b 03 04 شروع می‌شود. برای دیدن خود تصویر، data URI کامل را در نوار نشانی مرورگر بچسبانید. ورودی حداکثر 200,000 نویسه است، یعنی حدود 150,000 بایت فایل.

**چرا Base64 حدود یک سوم بلندتر از داده اصلی است؟**

Base64 هر 3 بایت را با 4 نویسه می‌نویسد و گروه آخر را با = تا مضربی از 4 پر می‌کند (RFC 4648)، پس خروجی 4/3 بایت‌های ورودی است، رو به بالا گرد شده. Hello, World برابر 12 بایت است و به 16 نویسه SGVsbG8sIFdvcmxk تبدیل می‌شود. شمارش بر اساس بایت UTF-8 است نه حرف: café چهار نویسه اما 5 بایت است و Y2Fmw6k= می‌شود، و ₹100 برابر 6 بایت است و 4oK5MTAw می‌شود. پیوست‌های ایمیل کمی بیشتر بزرگ می‌شوند، چون MIME متن Base64 را به سطرهایی با حداکثر 76 نویسه می‌شکند (RFC 2045)؛ این صفحه هنگام رمزگشایی این شکست سطرها را نادیده می‌گیرد. Base64URL بدون پرکننده فقط علامت‌های = را حذف می‌کند.

## بیشتر در ابزارهای برنامه‌نویسان

- [مبدل مهر زمانی Unix](https://discuvr.org/timestamp-converter/?hl=fa)
- [سازنده نمودار سیستم](https://discuvr.org/system-diagram/?hl=fa)
- [فرمت‌کننده JSON](https://discuvr.org/json-formatter/?hl=fa)
- [قالب‌بندی‌کننده Python](https://discuvr.org/python-formatter/?hl=fa)

## اغلب همراه با این‌ها استفاده می‌شود

- [تولیدکننده رمز عبور](https://discuvr.org/password-generator/?hl=fa)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
