ToolDeck

JWT এনকোডার

HS256, HS384, HS512 দিয়ে JSON Web Token তৈরি ও সাইন করুন

হেডার

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ

পেলোড

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ

সিক্রেট কী

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ

এনকোডেড JWT

Output will appear here…

আপনার সিক্রেট কী ব্রাউজার থেকে বের হয় না। সমস্ত সাইনিং ক্লায়েন্ট-সাইডে হয়।

এটাও ব্যবহার করুন:JWT ডিকোডার

JWT এনকোডিং কী?

JWT এনকোডিং হলো একটি JSON Web Token তৈরির প্রক্রিয়া — একটি কমপ্যাক্ট, URL-safe স্ট্রিং যা ক্রিপ্টোগ্রাফিক কী দিয়ে সাইন করা ক্লেমের একটি সেট বহন করে। ফলাফল হলো একটি তিন-অংশের টোকেন (header.payload.signature) যা RFC 7519 দ্বারা সংজ্ঞায়িত, সার্ভার সেশন স্টেট বজায় না রেখেই যাচাই করতে পারে। অনলাইন JWT এনকোডিং আপনাকে পরীক্ষা ও ডেভেলপমেন্টের জন্য সরাসরি ব্রাউজারে টোকেন তৈরি ও সাইন করতে দেয়।

হেডার সাইনিং অ্যালগরিদম (যেমন HS256) এবং টোকেন টাইপ ঘোষণা করে। পেলোডে ক্লেম থাকে — কী-ভ্যালু জোড়া যেমন সাবজেক্ট (sub), মেয়াদ শেষের সময় (exp), এবং আপনার অ্যাপ্লিকেশনের প্রয়োজনীয় কাস্টম ডেটা। উভয় অংশ JSON হিসেবে সিরিয়ালাইজ করা হয়, তারপর base64url-এনকোড করা হয়। সিগনেচার একটি সিক্রেট কী ব্যবহার করে এনকোডেড হেডার ও পেলোডের উপর গণনা করা হয়, তিনটি অংশ একসাথে আবদ্ধ করে।

সেশন কুকির বিপরীতে, JWT স্ব-সম্পূর্ণ: যাচাইকারীকে ডেটাবেস কোয়েরি করতে বা কোনো বাহ্যিক সার্ভিস কল করতে হয় না। এটি JWT-ভিত্তিক প্রমাণীকরণকে REST API, মাইক্রোসার্ভিস এবং সিঙ্গেল-পেজ অ্যাপ্লিকেশনে জনপ্রিয় করে তুলেছে যেখানে স্টেটলেস অনুমোদন লেটেন্সি কমায় এবং অনুভূমিক স্কেলিং সহজ করে।

JWT এনকোডার কেন ব্যবহার করবেন?

হাতে JWT তৈরি করতে base64url এনকোডিং, JSON সিরিয়ালাইজেশন এবং HMAC গণনার প্রয়োজন। এই টুলটি তিনটি ধাপ তাৎক্ষণিকভাবে পরিচালনা করে যাতে আপনি সঠিক ক্লেম পেতে মনোযোগ দিতে পারেন।

তাৎক্ষণিক টোকেন তৈরি
হেডার, পেলোড ও সিক্রেট সম্পাদনা করুন — সাইন করা JWT রিয়েল টাইমে আপডেট হয়। কোনো বিল্ড স্টেপ নেই, লাইব্রেরি ইনস্টল নেই, বয়লারপ্লেট কোড নেই।
🔒
একাধিক HMAC অ্যালগরিদম
এক ক্লিকে HS256, HS384 ও HS512-এর মধ্যে পরিবর্তন করুন। হেডার স্বয়ংক্রিয়ভাবে আপডেট হয় এবং সিগনেচার অবিলম্বে পুনরায় গণনা করা হয়।
🛡️
গোপনীয়তা-প্রথম প্রক্রিয়াকরণ
সমস্ত সাইনিং Web Crypto API ব্যবহার করে আপনার ব্রাউজারে হয়। আপনার সিক্রেট কী ও পেলোড ডেটা আপনার মেশিন থেকে বের হয় না — কোনো সার্ভার নেই, লগ নেই, ঝুঁকি নেই।
📋
এক-ক্লিক ক্লেম সহায়তা
একটি বোতামে iat, exp+1h বা exp+24h টাইমস্ট্যাম্প যোগ করুন। Unix টাইমস্ট্যাম্প ম্যানুয়ালি গণনা করতে বা বর্তমান epoch সময় খুঁজতে হবে না।

JWT এনকোডারের ব্যবহারের ক্ষেত্র

ফ্রন্টএন্ড প্রমাণীকরণ পরীক্ষা
নির্দিষ্ট ক্লেম ও মেয়াদ সহ টোকেন তৈরি করুন লগইন ফ্লো, টোকেন রিফ্রেশ লজিক এবং সুরক্ষিত রুট গার্ড পরীক্ষা করতে — ব্যাকএন্ড অথ সার্ভার না চালিয়ে।
ব্যাকএন্ড API ডেভেলপমেন্ট
কাস্টম sub, aud ও scope ক্লেম সহ পরীক্ষার টোকেন তৈরি করুন অথরাইজেশন মিডলওয়্যার, রোল-ভিত্তিক অ্যাক্সেস কন্ট্রোল এবং স্থানীয় ডেভেলপমেন্টে অনুমতি পরীক্ষার জন্য।
DevOps ও CI/CD পাইপলাইন
ডেপ্লয়মেন্ট স্ক্রিপ্ট, ইন্টিগ্রেশন টেস্ট বা সার্ভিস-থেকে-সার্ভিস যোগাযোগের জন্য স্বল্পমেয়াদী সার্ভিস টোকেন তৈরি করুন যেখানে পূর্ণ OAuth ফ্লো অপ্রয়োজনীয় জটিলতা যোগ করবে।
QA ও ম্যানুয়াল পরীক্ষা
এজ-কেস ক্লেম সহ টোকেন তৈরি করুন — মেয়াদোত্তীর্ণ টোকেন, অনুপস্থিত ফিল্ড, ভুল অডিয়েন্স — যাচাই করতে যে আপনার 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 সিগনেচার এনকোডেড হেডার ও পেলোডের সঠিক বাইটের উপর গণনা করা হয়। যেকোনো পরিবর্তন — একটি স্পেস যোগ করা বা একটি অক্ষর পরিবর্তন করাও — সম্পূর্ণ আলাদা সিগনেচার তৈরি করে। সঠিকভাবে বাস্তবায়িত যাচাইকারী সিগনেচার অমিল ত্রুটি সহ টোকেনটি প্রত্যাখ্যান করবে।