مُنشئ وترميز JWT
مولّد ومرمّز JWT مجاني أونلاين. ابنِ الترويسة والحمولة، ووقّع بـ HS256 أو RS256 أو ES256 فوراً. 100% في المتصفح — سرّك ومفتاحك لا يغادران جهازك.
ما هو مرمّز JWT؟
مرمّز JWT يبني ويوقّع تعمياً رمز ويب JSON من ترويسة وحمولة من المطالبات. ورمز JWT، المعرّف في RFC 7519، هو ثلاثة أقسام مرمّزة بـ Base64URL مفصولة بنقاط: header.payload.signature. تسمّي الترويسة خوارزمية التوقيع؛ وتحمل الحمولة المطالبات (عمّن يدور الرمز، وما يستطيع فعله، ومتى ينتهي)؛ والتوقيع إثبات تعموي، محسوب فوق الترويسة والحمولة بسرّ أو مفتاح خاص، يتيح للمستلم اكتشاف العبث.
"رمز ويب JSON (JWT) هو تنسيق تمثيل مدمج للمطالبات مخصّص للبيئات المحدودة الحجم مثل ترويسات Authorization في HTTP ومعاملات استعلام URI." — RFC 7519، القسم 1
الترميز عكس فك الترميز. يقرأ محلّل JWT مطالبات رمز موجود؛ أما المرمّز فيأخذ مطالبات تزوّدها وينتج رمزاً موقّعاً جديداً تماماً. خطوة التوقيع هي ما يفصل JWT حقيقياً عن Base64 اعتباطي — فبلا توقيع صالح، لن يقبل أي مُتحقّق الرمز. توقّع هذه الأداة باستخدام واجهة Web Crypto API الأصلية في المتصفح عبر عائلات HMAC (HS) وRSA (RS وPS) وECDSA (ES)، فتجري العملية بأكملها على جهازك بلا تبعيات وبلا استدعاءات شبكة.
يلجأ المطوّرون إلى مرمّز JWT باستمرار: لسكّ رمز يختبر نقطة نهاية API محميّة، أو لإعادة إنتاج شكل المطالبات الدقيق الذي يُصدره خادم OAuth كي يُصحَّح خلل، أو لبناء تجهيزات لاختبارات التكامل، أو لتسليم زميل رمز Bearer جاهزاً لأمر curl. ولأن الحمولة مرمّزة لا معمّاة، فـ JWT آمن للتمرير عبر الشبكة لكنه يجب ألّا يحمل أسراراً أبداً — يمكن لأي شخص يملك الرمز قراءة كل مطالبة، والتوقيع وحده هو ما يمنعهم من تغيير واحدة.
يقترن عمل JWT طبيعياً بأدوات مطوّرين أخرى. بعد التوقيع، فكّ ترميز الرمز للتأكّد من مطالباته، أو حوّل exp وiat بين وقت Unix والتواريخ البشرية، أو احسب بصمة SHA-256 حين تحتاج إلى دالة التجزئة الأساسية التي يُبنى عليها HMAC في HS256. ولأن كل مقطع من JWT مرمّز بـ Base64URL، فأداة Base64 مفيدة عند فحص رمز يدوياً؛ وللاطّلاع المتعمّق على الترميز، راجع دليل أساسيات Base64 لدينا.
// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
const b64url = (bytes) =>
btoa(String.fromCharCode(...new Uint8Array(bytes)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
const enc = (obj) =>
b64url(new TextEncoder().encode(JSON.stringify(obj)));
const header = { alg: 'HS256', typ: 'JWT' };
const signingInput = `${enc(header)}.${enc(payload)}`;
const key = await crypto.subtle.importKey(
'raw', new TextEncoder().encode(secret),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const sig = await crypto.subtle.sign(
'HMAC', key, new TextEncoder().encode(signingInput));
return `${signingInput}.${b64url(sig)}`;
}
const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0.... الميزات الرئيسية
ولّد ووقّع رموز JWT فوراً
حرّر الحمولة وشاهد الرمز الموقّع يتحدّث في الوقت الفعلي — تُحسب الترويسة والحمولة والتوقيع آنياً. لا زر توليد، ولا رحلة ذهاب وإياب إلى خادم.
تغطية كاملة للخوارزميات
وقّع بـ HS256/384/512 وRS256/384/512 وPS256/384/512 وES256/384/512 — كل عائلات JWS الشائعة، جميعها عبر واجهة Web Crypto API الأصلية في المتصفح.
المفاتيح لا تغادر جهازك
يُستخدم سرّك ومفتاحك الخاص بصيغة PKCS8 بالكامل داخل المتصفح. لا شيء يُرفع أو يُسجَّل أو يُخزَّن — آمن للتطوير والاستجابة للحوادث.
مساعدات المطالبات السريعة
أدرج iss وsub وaud وiat وnbf أو exp لساعة واحدة بنقرة واحدة — بلا طوابع Unix زمنية يدوية، وبلا أخطاء صياغة.
مخرجات ملوّنة
يُقسَّم الرمز الموقّع إلى ترويسة وحمولة وتوقيع بألوان مميّزة، فتكون البنية واضحة بنظرة واحدة وسهلة النسخ.
بلا تبعيات
مبني فقط على واجهة Web Crypto API في المتصفح وJSON — لا مكتبات خارجية، ولا قياسات، ولا استدعاءات شبكة من أي نوع.
أمثلة
رمز جلسة HS256
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>
رمز موقّع بخوارزمية HMAC-SHA256 بسرّ مشترك — أكثر الإعدادات شيوعاً لمصادقة الجلسات عديمة الحالة. يمكن لأي طرف يملك السرّ نفسه التحقّق منه.
رمز وصول RS256
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"scope": "read:user write:post",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8) eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>
رمز وصول بأسلوب OAuth موقّع بـ RSA. يُوقَّع الرمز بمفتاحك الخاص ويتحقّق منه أي طرف يملك المفتاح العام المطابق — مثالي حين يجب ألّا يكون المُتحقِّق قادراً على سكّ الرموز.
رمز ES256 مدمج
{
"sub": "device-42",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256) eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>
رمز ECDSA على المنحنى P-256. توقيعات ES256 أقصر بكثير من RSA مع أمان مكافئ، مما يبقي الرمز صغيراً للبيئات المحدودة.
كيفية الاستخدام
- 1
حرّر مطالبات الحمولة
اكتب المطالبات التي يحتاجها رمزك كـ JSON في محرّر الحمولة. استخدم شارات المطالبات السريعة لإدراج iss وsub وaud وiat وnbf أو exp لساعة واحدة دون كتابة الطوابع الزمنية.
- 2
اختر الخوارزمية وأدخل المفتاح
اختر خوارزمية توقيع. لـ HS256/384/512 أدخل سرّاً؛ ولخوارزميات RS أو PS أو ES الصق مفتاحاً خاصاً بصيغة PKCS8 PEM. يُوقَّع الرمز محلياً أثناء الكتابة.
- 3
انسخ رمز JWT الموقّع
يظهر الرمز الموقّع فوراً، ملوّناً بحسب المقطع. انقر نسخ لنقله إلى ترويسة Authorization أو أمر curl أو اختبار. لم يغادر مفتاحك متصفحك.
Common Errors
استخدام سرّ HMAC ضعيف
يعتمد أمان HS256 بالكامل على عشوائية السرّ. سرّ قصير أو سهل التخمين يتيح للمهاجمين كسره بالقوة الغاشمة وتزوير الرموز. استخدم 256 بت من العشوائية على الأقل.
secret: "password123" // guessable, low entropy
secret: base64(crypto.randomBytes(32)) // >=256 random bits
إغفال مطالبة exp
رمز بلا exp لا ينتهي أبداً. إذا تسرّب، فلا توجد نقطة إلغاء طبيعية. اضبط دائماً انتهاء صلاحية مناسباً لنوع الرمز.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } لصق مفتاح PKCS1 بدلاً من PKCS8
تستورد واجهة Web Crypto API مفاتيح PKCS8 الخاصة فقط. يفشل استيراد مفتاح RSA PKCS1 التقليدي — حوّله أولاً.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
حالات الاستخدام الشائعة
- توليد رموز لاختبار واجهات API
- ولّد رمز Bearer بخوارزمية HS256 في ثوانٍ لاختبار نقطة نهاية محميّة من curl أو Postman أو اختبار تكامل.
- إعادة إنتاج رموز OAuth وOIDC
- ابنِ رمز RS256 أو ES256 يحاكي ما يُصدره خادم التفويض لديك، حتى تصحّح عدم تطابق المطالبات والجمهور.
- إنشاء تجهيزات اختبار
- أنتج رموزاً موقّعة قطعية لاختبارات الوحدة والتكامل دون إقامة خادم مصادقة كامل.
- تصحيح فشل التفويض
- أعد إنشاء شكل رمز عميل — المُصدِر والجمهور والنطاق وانتهاء الصلاحية — لاكتشاف سبب رفض الواجهة الخلفية له.
- التحقّق من مُتحقّق
- وقّع رموزاً بمفتاح معروف للتأكّد من أن وسطاء التحقّق لديك يقبلون الرموز الصالحة ويرفضون المعبوث بها.
- إنشاء نماذج أولية لتدفّقات المصادقة
- سلّم زملاءك رموزاً جاهزة أثناء توصيل تسجيل دخول جديد أو خدمة مصغّرة أو استدعاء بين الخدمات.
تفاصيل تقنية
- متوافق مع RFC 7519 / 7515 / 7518
- ينتج رموز JWS متوافقة مع RFC 7519 (JWT) وRFC 7515 (JWS) وRFC 7518 (JWA)، مع معرّفات الخوارزميات المسجّلة في الترويسة.
- توقيع أصيل بـ Web Crypto
- يوقّع عبر crypto.subtle لـ HMAC وRSASSA-PKCS1-v1_5 وRSA-PSS وECDSA. تُنتَج توقيعات ECDSA كـ r||s خام، تماماً كما يتطلّب JWS.
- Base64URL، بلا تبعيات
- تُرمّز الترويسة والحمولة بـ Base64URL بالأبجدية الآمنة للروابط (RFC 4648)، بلا حشو. لا مكتبات خارجية، ولا استدعاءات شبكة، ولا قياسات.
أفضل الممارسات
- اضبط دائماً انتهاء صلاحية
- ضمّن مطالبة exp حتى يتوقّف الرمز المسرّب عن كونه صالحاً. الأعمار القصيرة تقلّص نطاق الضرر — دقائق لرموز الوصول، لا أيام.
- أبقِ الأسرار خارج الحمولة
- حمولة JWT قابلة للقراءة من قِبل أي شخص يملك الرمز. ضع فيها المعرّفات والنطاقات؛ لا كلمات مرور أو مفاتيح API أو بيانات شخصية كاملة أبداً.
- وقّع على جانب الخادم في الإنتاج
- استخدم هذه الأداة للاختبارات والتصحيح. في الأنظمة الحقيقية، وقّع الرموز على الخادم بمكتبة مُصانة ومفتاح من مدير الأسرار لديك.
الأسئلة الشائعة
كيف أولّد رمز JWT أونلاين؟
ما هو مولّد JWT؟
header.payload.signature يمكنك استخدامها كرمز Bearer. وهو عكس محلّل JWT: بدلاً من قراءة رمز موجود، ينشئ رمزاً جديداً موقّعاً بسرّك (HS256) أو مفتاحك الخاص (RS256/ES256). يعمل هذا المولّد بالكامل في متصفحك، فيُنتَج الرمز فوراً ولا يغادر مفتاح التوقيع جهازك أبداً. هل مولّد JWT هذا مجاني وآمن للاستخدام؟
هل من الآمن إدخال سرّي أو مفتاحي الخاص هنا؟
ما الفرق بين HS256 وRS256؟
ما الخوارزميات التي يدعمها هذا المرمّز لـ JWT؟
كيف أضبط مطالبة exp (انتهاء الصلاحية)؟
exp إلى الحمولة كطابع Unix زمني بالثواني — مثلاً "exp": 1999999999. أسرع طريقة هي شارة exp +1h أسفل الحمولة، التي تُدرج انتهاء صلاحية بعد ساعة من الآن. يمكنك أيضاً إضافة iat (وقت الإصدار) وnbf (ليس قبل) بالطريقة نفسها. تذكّر أن exp بـ الثواني لا بالمللي ثانية، وأن المُتحقّقين يقارنونه بساعتهم، فأبقِ أوقات الخوادم متزامنة لتجنّب الرفض المبكّر. لتحويل تاريخ بشري إلى طابع Unix زمني، استخدم محوّل طوابع Unix الزمنية لدينا. كيف أحصل على مفتاح خاص بصيغة PKCS8 PEM لـ RS256 أو ES256؟
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. لـ ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. يُنتج كلا الأمرين كتلة PKCS8 PEM تبدأ بـ -----BEGIN PRIVATE KEY-----، وهو بالضبط ما تتوقّعه هذه الأداة. الصق الكتلة كاملةً، بما في ذلك سطرَي الترويسة والتذييل. يمكن اشتقاق المفتاح العام المطابق — المستخدَم للتحقّق من الرمز — بـ openssl pkey -in private.pem -pubout. كيف أتحقّق من الرمز الذي ولّدته للتو؟
jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) في Node.js، أو PyJWT.decode(token, key, algorithms=['RS256']) في Python، أو jwt.Parse(token, keyFunc) في Go. لا تتحقّق أبداً بقائمة خوارزميات فارغة أو بـ verify_signature=False في الإنتاج — ثبّت دائماً الخوارزمية المحدّدة التي تتوقّعها. ماذا ينبغي أن أضع في الحمولة؟
iss (المُصدِر)، وsub (الموضوع — عادةً معرّف المستخدم)، وaud (الجمهور)، وexp (انتهاء الصلاحية)، وnbf (ليس قبل)، وiat (صدر في)، وjti (معرّف الرمز). إلى جانبها يمكنك إضافة مطالبات خاصة بالتطبيق مثل role أو scope أو email. لا تضع أسراراً في الحمولة — فـ JWT مرمّز لا معمّى، فيمكن لأي شخص يملك الرمز قراءة كل مطالبة. أبقِ الرموز تحت نحو 4 كيلوبايت لتلائم ترويسات Authorization وملفات تعريف الارتباط. هل رمز JWT معمّى؟
لماذا يفشل توقيعي بـ RS256 أو ES256؟
-----BEGIN RSA PRIVATE KEY----- (PKCS1) بـ openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem؛ (2) المنحنى لا يطابق الخوارزمية — ES256 يحتاج مفتاح P-256، وES384 يحتاج P-384، وES512 يحتاج P-521؛ (3) لصقت مفتاحاً عاماً أو شهادة بدلاً من المفتاح الخاص؛ أو (4) المفتاح معمّى بعبارة مرور، وهو ما لا يمكن لـ Web Crypto API استيراده مباشرةً. فكّ تعميته أولاً بـ openssl pkey والصق كتلة PKCS8 غير المعمّاة. هل تدعم هذه الأداة الرمز غير الموقّع alg:none؟
alg:none ليس له توقيع، مما يعني أن أي شخص يمكنه تزويره — وهو أصل ثغرة كلاسيكية لتجاوز مصادقة JWT. ولأن جوهر المرمّز هو إنتاج رمز موقّع، فهذه الأداة تقدّم خوارزميات توقيع حقيقية فقط. إذا كنت تدرس alg:none لأغراض بحث أمني، يمكنك بناء واحد يدوياً بترميز الترويسة والحمولة بـ Base64URL وترك مقطع التوقيع فارغاً — يظل الرمز منتهياً بنقطة لاحقة (header.payload.) — لكن يجب ألّا تقبل أبداً مثل هذا الرمز في الإنتاج. هل يمكنني توليد JWT في الكود بدلاً من ذلك؟
jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). في Python: jwt.encode(payload, key, algorithm='RS256') مع PyJWT. في Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). هذه الأداة أسرع طريقة لإنتاج رمز لاختبار سريع أو طلب curl أو تجهيزة اختبار — لكن في كود التطبيق يجب أن تولّد الرموز على جانب الخادم بمكتبة مُصانة ومفتاح مُحمّل من مدير الأسرار لديك، لا مكتوب في الكود مباشرةً. أدوات ذات صلة
عرض جميع الأدوات →محلّل JWT — فك ترميز الرموز
أدوات الأمن
فك ترميز رموز JWT أونلاين مع محلّل JWT المجاني. افحص الترويسة والحمولة والتوقيع وانتهاء الصلاحية والخوارزمية والمطالبات فوراً. 100% في المتصفح — رمزك لا يغادر جهازك. بلا تسجيل، بلا تتبّع.
مولّد تجزئة MD5 — فوري ومجاني أونلاين
أدوات الأمن
أنشئ تجزئة MD5 وSHA-256 وSHA-1 وSHA-512 فوراً — أداة مجانية تعمل في متصفّحك بدون تتبّع أو رفع بيانات. الصق النص واحصل على التجزئة في ثانية. جرّبها الآن.
مولّد كلمات مرور عشوائية — قوي وآمن ومجاني
أدوات الأمن
ولّد كلمات مرور عشوائية قوية فوراً — أداة مجانية أونلاين تعمل في متصفّحك فقط. خصّص الطول والأحرف، دُفعات حتى 50 مع تحليل الإنتروبيا. بياناتك لا تغادر جهازك.
مولّد تجزئة SHA-1 (160 بت — إرث)
أدوات الأمن
أنشئ تجزئات SHA-1 في متصفحك — مخرجات سداسية من 40 حرفاً، بدون رفع. أداة إرثية لمعرّفات Git وفحص الشهادات القديمة وعمليات التدقيق. بياناتك لا تغادر جهازك.
مولّد تجزئة SHA-256 وأداة المجموع الاختباري
أدوات الأمن
أنشئ تجزئات SHA-256 أونلاين مجاناً. جزّئ النصوص والملفات في متصفحك، تحقق من المجاميع الاختبارية، وانسخ مخرجات سداسية من 64 حرفاً. بدون تسجيل؛ بياناتك لا تغادر الصفحة.
مولّد تجزئة SHA-3 (إسفنج Keccak)
أدوات الأمن
أنشئ تجزئات SHA-3 أونلاين مجاناً. بنية إسفنج NIST FIPS 202 — معيار ما بعد SHA-2. مخرجات SHA3-256 في 64 حرفاً سداسياً. في المتصفح عبر js-sha3 محمّل كسولاً؛ بدون رفع.