एन्कोड | डिकोड | संपीड़ित

> base64url | jwt | url-सुरक्षित <

// Base64url - URL और फ़ाइल नामों के लिए सुरक्षित, बिना पैडिंग वाला Base64 वेरिएंट

[URL-SAFE]

URL के लिए अनुकूल

कोई विशेष URL वर्ण नहीं – क्वेरी पैरामीटर और पथों के लिए सुरक्षित।

[JWT]

JWT मानक

JSON Web Tokens और OAuth 2.0 विनिर्देशों में उपयोग किया जाता है।

[NO-PADDING]

वैकल्पिक पैडिंग

ज़्यादा साफ़ URL के लिए पैडिंग वर्ण (=) छोड़े जा सकते हैं।

>> तकनीकी जानकारी

Base64url कैसे काम करता है:

Base64url, Base64 का एक वेरिएंट है जो "+" को "-" और "/" को "_" से बदल देता है, जिससे यह URL और फ़ाइल नामों के लिए सुरक्षित हो जाता है। पैडिंग वर्ण "=" अक्सर हटाया जाता है क्योंकि यह URL में समस्या पैदा कर सकता है।

तुलना:

Base64: SGVsbG8+Pw== Base64url: SGVsbG8-Pw

Base64url का उपयोग क्यों करें:

  • >JWT टोकन
  • >OAuth 2.0 फ्लो
  • >URL क्वेरी पैरामीटर
  • >फ़ाइल नाम एन्कोडिंग
  • >वेब API हस्ताक्षर

>> अक्सर पूछे जाने वाले प्रश्न

Base64url क्या है?

Base64url, Base64 एन्कोडिंग का एक वेरिएंट है जो URL और फ़ाइल नामों के लिए सुरक्षित है। यह "+" को "-" और "/" को "_" से बदलता है और आवश्यकता होने पर "=" पैडिंग वर्णों को हटाता है ताकि URL एन्कोडिंग समस्याएँ न हों।

URL में सामान्य Base64 का उपयोग क्यों नहीं करना चाहिए?

सामान्य Base64 "+", "/" और "=" वर्णों का उपयोग करता है जिनके URL में विशेष अर्थ होते हैं। "+" को स्पेस की तरह माना जा सकता है, "/" पाथ सेपरेटर है और "=" पैरामीटर के लिए उपयोग होता है, जिससे पार्सिंग में समस्याएँ आती हैं।

Base64url कहाँ उपयोग होता है?

Base64url का व्यापक उपयोग JWT (JSON Web Tokens), OAuth 2.0 ऑथराइज़ेशन कोड, SAML assertions और उन सभी API में होता है जिन्हें URL या HTTP हेडर में बाइनरी डेटा भेजना होता है।

क्या Base64url में पैडिंग अनिवार्य है?

नहीं, Base64url में पैडिंग वैकल्पिक है। कई इम्प्लीमेंटेशन पैडिंग हटाते हैं क्योंकि लंबाई की गणना की जा सकती है। JWT स्पेसिफिकेशन विशेष रूप से साफ़ URL के लिए बिना पैडिंग की मांग करता है।

// Base64 से अंतर

Base64Base64url
+-
/_
=—

// कोड में Base64url

JavaScript   btoa(s).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')
Node.js      Buffer.from(s).toString('base64url')
Python       base64.urlsafe_b64encode(b).rstrip(b'=')
Go           base64.RawURLEncoding.EncodeToString(b)
Padding      s + '=' * (-len(s) % 4)

>> और प्रश्न

प्र: Base64url में «=» क्यों हटा दिया जाता है?

उ: पैडिंग लंबाई से निकाली जा सकती है और «=» का URL तथा क्वेरी स्ट्रिंग में विशेष अर्थ होता है। इसलिए JWT (RFC 7515) और कई API बिना पैडिंग का Base64url लिखते हैं।

प्र: डिकोड करने से पहले पैडिंग कैसे वापस लाएँ?

उ: लंबाई को 4 से भाग देकर शेषफल देखें: शेष 2 → ==, शेष 3 → =, शेष 0 → कुछ नहीं। शेष 1 कभी वैध नहीं होता। साथ ही - को + और _ को / में बदलें।

प्र: क्या Base64url एन्क्रिप्शन है?

उ: नहीं, यह केवल एन्कोडिंग है और कोई भी इसे उलट सकता है। JWT का payload पढ़ा जा सकता है, इसलिए उसमें गोपनीय जानकारी न रखें।

अन्य भाषाएँ