JWT Encoder

HS256, HS384, HS512 के साथ JSON Web Tokens बनाएं और हस्ताक्षर करें

हेडर

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है

पेलोड

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है

गुप्त कुंजी

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है

एन्कोडित JWT

Output will appear here…

आपकी गुप्त कुंजी कभी भी आपके ब्राउज़र से नहीं निकलती। सभी हस्ताक्षर क्लाइंट-साइड पर होते हैं।

यह भी आज़माएं:JWT Decoder

JWT एन्कोडिंग क्या है?

JWT एन्कोडिंग एक JSON Web Token बनाने की प्रक्रिया है — एक कॉम्पैक्ट, URL-सुरक्षित स्ट्रिंग जो क्रिप्टोग्राफिक कुंजी से हस्ताक्षरित दावों के एक सेट को ले जाती है। परिणाम RFC 7519 द्वारा परिभाषित एक तीन-भाग टोकन (हेडर.पेलोड.हस्ताक्षर) है जिसे सर्वर सत्र स्थिति बनाए रखे बिना सत्यापित कर सकते हैं।

हेडर हस्ताक्षर एल्गोरिदम (जैसे HS256) और टोकन प्रकार घोषित करता है। पेलोड में क्लेम होते हैं — कुंजी-मान युग्म जैसे subject (sub), समाप्ति समय (exp), और आपके अनुप्रयोग को आवश्यक कोई भी कस्टम डेटा। दोनों भागों को JSON के रूप में क्रमबद्ध किया जाता है, फिर base64url-एन्कोड किया जाता है। सिग्नेचर एक सीक्रेट की का उपयोग करके एन्कोडेड हेडर और पेलोड पर संगणित होता है, जो तीनों खंडों को एक साथ बांधता है।

सत्र कुकीज़ के विपरीत, JWT स्व-निहित होते हैं: सत्यापनकर्ता को डेटाबेस से पूछताछ करने या बाहरी सेवा को कॉल करने की आवश्यकता नहीं होती। यही कारण है कि JWT-आधारित प्रमाणीकरण REST API, माइक्रोसर्विसेज़ और सिंगल-पेज अनुप्रयोगों में लोकप्रिय है जहाँ स्टेटलेस प्राधिकरण विलंबता कम करता है और क्षैतिज स्केलिंग को सरल बनाता है।

JWT Encoder का उपयोग क्यों करें?

JWT को हाथ से बनाने के लिए base64url एन्कोडिंग, JSON क्रमबद्धता और HMAC संगणना की आवश्यकता होती है। यह टूल तीनों चरणों को तुरंत संभाल लेता है ताकि आप क्लेम को सही करने पर ध्यान केंद्रित कर सकें।

तत्काल टोकन उत्पादन
हेडर, पेलोड और सीक्रेट संपादित करें — हस्ताक्षरित JWT वास्तविक समय में अपडेट होता है। कोई बिल्ड चरण नहीं, कोई लाइब्रेरी स्थापना नहीं, कोई बॉयलरप्लेट कोड नहीं।
🔒
एकाधिक HMAC एल्गोरिदम
एक क्लिक से HS256, HS384 और HS512 के बीच स्विच करें। हेडर स्वचालित रूप से अपडेट होता है और सिग्नेचर तुरंत पुनः संगणित हो जाता है।
🛡️
गोपनीयता-प्रथम प्रसंस्करण
सभी हस्ताक्षर Web Crypto API का उपयोग करके आपके ब्राउज़र में होते हैं। आपकी सीक्रेट की और पेलोड डेटा कभी भी आपके उपकरण से बाहर नहीं जाता — कोई सर्वर नहीं, कोई लॉग नहीं, कोई जोखिम नहीं।
📋
एक-क्लिक क्लेम सहायक
एक बटन से iat, exp+1h या exp+24h टाइमस्टैम्प जोड़ें। Unix टाइमस्टैम्प मैन्युअली संगणित करने या वर्तमान epoch समय खोजने की कोई आवश्यकता नहीं।

JWT Encoder के उपयोग के मामले

फ्रंटएंड प्रमाणीकरण परीक्षण
बैकएंड ऑथ सर्वर चलाए बिना लॉगिन प्रवाह, टोकन रिफ्रेश तर्क और संरक्षित रूट गार्ड का परीक्षण करने के लिए विशिष्ट क्लेम और समाप्ति समय वाले टोकन उत्पन्न करें।
बैकएंड API विकास
स्थानीय विकास के दौरान प्राधिकरण मिडलवेयर, भूमिका-आधारित अभिगम नियंत्रण और अनुमति जाँच का परीक्षण करने के लिए कस्टम sub, aud और scope क्लेम वाले परीक्षण टोकन बनाएं।
DevOps और CI/CD पाइपलाइन
परिनियोजन स्क्रिप्ट, एकीकरण परीक्षण या अंतर-सेवा संचार के लिए अल्पकालिक सेवा टोकन उत्पन्न करें जहाँ पूर्ण OAuth प्रवाह अनावश्यक जटिलता जोड़ेगा।
QA और मैन्युअल परीक्षण
सीमांत क्लेम वाले टोकन बनाएं — समाप्त टोकन, अनुपस्थित फ़ील्ड, गलत aud — यह सत्यापित करने के लिए कि आपका API सही HTTP 401 या 403 प्रतिक्रियाएं लौटाता है।
सुरक्षा ऑडिटिंग
विभिन्न एल्गोरिदम और सीक्रेट लंबाइयों से हस्ताक्षरित टोकन बनाएं यह सत्यापित करने के लिए कि आपका सत्यापन तर्क कमज़ोर या असंगत सिग्नेचर को सही ढंग से अस्वीकार करता है।
अध्ययन और प्रोटोटाइपिंग
JWT में नए छात्र और डेवलपर हेडर फ़ील्ड, क्लेम संरचना और हस्ताक्षर एल्गोरिदम के साथ प्रयोग करके यह समझ सकते हैं कि टोकन का प्रत्येक भाग कैसे काम करता है।

HS256 बनाम HS384 बनाम HS512: HMAC एल्गोरिदम तुलना

तीनों एल्गोरिदम साझा सीक्रेट के साथ HMAC (Hash-based Message Authentication Code) का उपयोग करते हैं। अंतर अंतर्निहित हैश फ़ंक्शन में है, जो सिग्नेचर लंबाई और सुरक्षा मार्जिन को प्रभावित करता है। अधिकांश अनुप्रयोगों के लिए HS256 पर्याप्त सुरक्षा प्रदान करता है। HS384 या HS512 चुनें जब अनुपालन आवश्यकताएं (जैसे FIPS-140) अधिक मजबूत हैश अनिवार्य करती हैं या जब आपके टोकन उच्च-मूल्य प्राधिकरण निर्णय वहन करते हैं।

एल्गोरिदमहैशसिग्नेचरगतिसामान्य उपयोग
HS256SHA-25632 BFastestGeneral purpose, default for most libraries
HS384SHA-38448 BFastHigher security margin, FIPS-140 compliant
HS512SHA-51264 BFastMaximum HMAC security, large payloads

मानक JWT क्लेम संदर्भ

RFC 7519 सात पंजीकृत क्लेम परिभाषित करता है। कोई भी अनिवार्य नहीं है, लेकिन इन्हें सही ढंग से उपयोग करने से अंतर-संचालनीयता और सुरक्षा बेहतर होती है। exp क्लेम विशेष रूप से महत्वपूर्ण है — बिना समाप्ति वाले टोकन अनिश्चित काल तक वैध रहते हैं यदि सीक्रेट नहीं बदला जाता।

क्लेमनामविवरणउदाहरण
issIssuerWho issued the token"auth.example.com"
subSubjectWho the token represents"user-123"
audAudienceIntended recipient service"api.example.com"
expExpirationUnix timestamp — token invalid after this time1717203600
nbfNot BeforeUnix timestamp — token invalid before this time1717200000
iatIssued AtUnix timestamp when the token was created1717200000
jtiJWT IDUnique token identifier for revocation tracking"a1b2c3d4"

कोड में JWT एन्कोडिंग

ये उदाहरण दिखाते हैं कि JWT को प्रोग्रामेटिक रूप से कैसे बनाया और हस्ताक्षरित किया जाए। प्रत्येक कोड खंड एक वैध HS256-हस्ताक्षरित टोकन उत्पन्न करता है। उत्पादन प्रणालियों के लिए, हमेशा exp क्लेम सेट करें और कम से कम 256 बिट की क्रिप्टोग्राफिक रूप से यादृच्छिक सीक्रेट का उपयोग करें।

JavaScript (Web Crypto API)
async function signJWT(payload, secret, alg = 'HS256') {
  const header = { alg, typ: 'JWT' }
  const enc = new TextEncoder()

  // Base64url encode header and payload
  const b64url = (obj) =>
    btoa(JSON.stringify(obj)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')

  const h = b64url(header)
  const p = b64url(payload)

  // Sign with HMAC-SHA256
  const key = await crypto.subtle.importKey(
    'raw', enc.encode(secret),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']
  )
  const sig = await crypto.subtle.sign('HMAC', key, enc.encode(`${h}.${p}`))
  const s = btoa(String.fromCharCode(...new Uint8Array(sig)))
    .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')

  return `${h}.${p}.${s}`
}

// Usage
const token = await signJWT(
  { sub: 'user-123', name: 'Alice', iat: Math.floor(Date.now() / 1000) },
  'your-256-bit-secret'
)
// → "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOi..."
Python (PyJWT)
import jwt
import time

payload = {
    "sub": "user-123",
    "name": "Alice",
    "iat": int(time.time()),
    "exp": int(time.time()) + 3600,  # expires in 1 hour
}

# Sign with HS256 (default)
token = jwt.encode(payload, "your-256-bit-secret", algorithm="HS256")
# → "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOi..."

# Verify and decode
decoded = jwt.decode(token, "your-256-bit-secret", algorithms=["HS256"])
# → {"sub": "user-123", "name": "Alice", "iat": 1717200000, "exp": 1717203600}
Node.js (jsonwebtoken)
const jwt = require('jsonwebtoken')

const payload = {
  sub: 'user-123',
  name: 'Alice',
  role: 'admin',
}

// Sign — iat is added automatically
const token = jwt.sign(payload, 'your-256-bit-secret', {
  algorithm: 'HS256',
  expiresIn: '1h',    // sets exp claim
  issuer: 'auth.example.com',  // sets iss claim
})

// Verify
const decoded = jwt.verify(token, 'your-256-bit-secret')
// → { sub: 'user-123', name: 'Alice', role: 'admin', iat: ..., exp: ... }
Go (golang-jwt)
package main

import (
    "fmt"
    "time"
    "github.com/golang-jwt/jwt/v5"
)

func main() {
    claims := jwt.MapClaims{
        "sub":  "user-123",
        "name": "Alice",
        "iat":  time.Now().Unix(),
        "exp":  time.Now().Add(time.Hour).Unix(),
    }

    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    signed, _ := token.SignedString([]byte("your-256-bit-secret"))
    fmt.Println(signed)
    // → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOi...
}

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

JWT एन्कोडिंग और JWT डिकोडिंग में क्या अंतर है?
JWT एन्कोडिंग हेडर, पेलोड और सीक्रेट की से एक हस्ताक्षरित टोकन बनाती है। JWT डिकोडिंग इस प्रक्रिया को उलटती है — यह base64url-एन्कोडेड हेडर और पेलोड को वापस JSON में पढ़ती है। डिकोडिंग के लिए सीक्रेट की की आवश्यकता नहीं होती; एन्कोडिंग के लिए हमेशा होती है क्योंकि सिग्नेचर संगणित करना आवश्यक है।
मेरी JWT सीक्रेट की कितनी लंबी होनी चाहिए?
HS256 के लिए, कम से कम 256 बिट (32 बाइट) की सीक्रेट का उपयोग करें। HS384 के लिए, कम से कम 384 बिट (48 बाइट)। HS512 के लिए, कम से कम 512 बिट (64 बाइट)। अधिकांश लाइब्रेरी तकनीकी रूप से छोटी सीक्रेट स्वीकार करती हैं लेकिन वे HMAC सिग्नेचर की प्रभावी सुरक्षा कम करती हैं। क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक जनरेटर से सीक्रेट बनाएं, मानव-चुने पासफ्रेज़ से नहीं।
क्या इस टूल में वास्तविक सीक्रेट की का उपयोग करना सुरक्षित है?
यह टूल Web Crypto API का उपयोग करके आपके ब्राउज़र में सब कुछ संसाधित करता है — किसी भी सर्वर पर कोई डेटा नहीं भेजा जाता। फिर भी, सामान्य सुरक्षा अभ्यास के रूप में किसी भी वेब टूल में उत्पादन सीक्रेट चिपकाने से बचें। उत्पादन कुंजी प्रबंधन के लिए, पर्यावरण चर या HashiCorp Vault या AWS Secrets Manager जैसे सीक्रेट मैनेजर का उपयोग करें।
मुझे अपने अनुप्रयोग के लिए HS256 या RS256 का उपयोग करना चाहिए?
HS256 का उपयोग तब करें जब एक ही सेवा टोकन बनाती और सत्यापित करती है — यह तेज़ और सरल है। RS256 (असममित) का उपयोग तब करें जब तृतीय-पक्ष सेवाओं को टोकन बनाने की क्षमता के बिना सत्यापित करना हो। RS256 OAuth 2.0 प्रदाताओं, OpenID Connect और बहु-किरायेदार SaaS आर्किटेक्चर में सामान्य है।
मेरा JWT बनने के तुरंत बाद समाप्त क्यों हो जाता है?
exp क्लेम मिलीसेकंड नहीं, सेकंड में Unix टाइमस्टैम्प का उपयोग करता है। यदि आप exp को Date.now() पर सेट करते हैं (जो मिलीसेकंड लौटाता है), टोकन हज़ारों वर्ष भविष्य में समाप्त होता दिखेगा — या यदि आप गलती से मिलीसेकंड मान का उपयोग करते हैं जहाँ सेकंड अपेक्षित हैं, लाइब्रेरी इसे पहले ही समाप्त मान सकती है। JavaScript में हमेशा Math.floor(Date.now() / 1000) या Python में int(time.time()) का उपयोग करें।
क्या मैं JWT पेलोड में संवेदनशील डेटा रख सकता हूँ?
आप रख सकते हैं, लेकिन आपको नहीं रखना चाहिए। JWT पेलोड base64url-एन्कोडेड है, एन्क्रिप्टेड नहीं — टोकन रखने वाला कोई भी व्यक्ति क्लेम पढ़ सकता है। पेलोड में पासवर्ड, क्रेडिट कार्ड नंबर या व्यक्तिगत डेटा संग्रहीत न करें। यदि आपको संवेदनशील जानकारी शामिल करनी हो, तो RFC 7516 में परिभाषित JWE (JSON Web Encryption) का उपयोग करें जो पूरे पेलोड को एन्क्रिप्ट करता है।
यदि मैं हस्ताक्षर के बाद पेलोड बदल दूं तो क्या होगा?
सिग्नेचर अमान्य हो जाता है। HMAC सिग्नेचर एन्कोडेड हेडर और पेलोड के सटीक बाइट पर संगणित होता है। कोई भी परिवर्तन — एक स्थान जोड़ना या एक वर्ण बदलना भी — पूरी तरह से अलग सिग्नेचर उत्पन्न करता है। उचित रूप से कार्यान्वित सत्यापनकर्ता सिग्नेचर बेमेल त्रुटि के साथ टोकन को अस्वीकार कर देगा।