أداة تشفير AES — GCM/CBC/CTR
أداة تشفير AES مجانية أونلاين — AES-128/192/256، GCM/CBC/CTR، عبارة مرور (PBKDF2) أو مفتاح خام. تعمل 100% داخل متصفحك؛ لا شيء يُرفع.
خيارات متقدّمة
لا تُعِد استخدام IV مع نفس المفتاح أبدًا. اترك الحقل فارغًا لتوليد IV عشوائي آمن.
ما هو تشفير AES؟
AES (معيار التشفير المتقدّم، Advanced Encryption Standard) هو خوارزمية تشفير كتل متماثلة، وحّدها المعهد الوطني الأمريكي للمعايير والتقنية NIST في وثيقة FIPS 197 عام 2001، استنادًا إلى تصميم Rijndael لـJoan Daemen وVincent Rijmen. يُشفِّر البيانات في كتل ثابتة بطول 128 بت باستخدام مفتاح بطول 128 أو 192 أو 256 بت، ونفس المفتاح يُشفِّر ويفكّ التشفير معًا. إنه حصان العمل في التعمية الحديثة، إذ يحمي كل شيء من حركة HTTPS إلى تشفير الأقراص.
خوارزمية تشفير الكتل الخام تُشوِّش كتلة واحدة فقط بطول 16 بايت، لذا يعمل AES دائمًا ضمن وضع تشغيل يربط الكتل ببعضها. تُتيح هذه الأداة ثلاثة أوضاع، جميعها مُوفَّرة أصليًا عبر Web Crypto API الخاص بالمتصفح: GCM وCBC وCTR. GCM (وضع Galois/Counter، NIST SP 800-38D) هو الافتراضي الموصى به لأنه مُصادَق عليه — إذ يُنتج وسم مصادقة بطول 128 بت إلى جانب النص المشفّر، فيُكتشف أي عبثٍ عند فك التشفير. أما CBC وCTR فيوفّران السرّية فقط؛ ولا يستطيعان بمفردهما إخبارك إن كان النص المشفّر قد عُدِّل، وهذا سبب إسقاط TLS 1.3 (RFC 8446) لكل مجموعات تشفير CBC لصالح أوضاع مُصادَق عليها مثل GCM.
ستلاحظ عدم وجود وضع ECB هنا، وهذا مقصود. يُشفِّر ECB كل كتلة نص صريح متطابقة إلى نفس كتلة النص المشفّر، فيتسرّب البنية الكبيرة مباشرةً — صورة «بطريق ECB» الشهيرة تبقى بطريقًا واضحًا حتى بعد التشفير. يُغفِل Web Crypto API وضع ECB لهذا السبب بالضبط (فهو ينفّذ فقط AES-CBC وAES-CTR وAES-GCM)، ونحن كذلك. إذا احتجت للتوافق مع نظام قديم استخدم ECB، فاعتبر ذلك سببًا لترحيله، لا لإعادة إنتاج ضعفه.
بما أن معظم الناس يكتبون عبارة مرور بدلًا من مفتاح عشوائي بطول 32 بايت، تشتق الأداة مفتاح AES من عبارة مرورك باستخدام PBKDF2-HMAC-SHA256 بـ600,000 تكرار وملح عشوائي بطول 16 بايت، بما يطابق إرشادات OWASP الحالية لتخزين كلمات المرور (وكذلك NIST SP 800-132 الذي يتطلّب ملحًا لا يقل عن 128 بت). هذا يجعل تخمين عبارة مرور ضعيفة بالقوة الغاشمة بطيئًا، لكنه ليس سحرًا: هذه أداة لتعلّم الأوضاع، وتصحيح النصوص المشفّرة، والبيانات الشخصية العابرة — وليست لحماية الأسرار الإنتاجية، التي تنتمي إلى نظام إدارة مفاتيح مخصّص. للحصول على عبارة مرور قوية، ولِّد واحدة عبر مولّد كلمات المرور العشوائية؛ ولمفتاح عشوائي حقيقي، استخدم مولّد مفتاح السر.
// AES-256-GCM with a passphrase (PBKDF2-HMAC-SHA256, 600,000 iterations).
// Identical code runs in the browser and in Node.js 20+ via Web Crypto.
async function aesGcmEncrypt(plaintext, passphrase) {
const enc = new TextEncoder();
const salt = crypto.getRandomValues(new Uint8Array(16));
const iv = crypto.getRandomValues(new Uint8Array(12));
const baseKey = await crypto.subtle.importKey(
'raw', enc.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
const key = await crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 600000, hash: 'SHA-256' },
baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt']);
const ct = new Uint8Array(await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv }, key, enc.encode(plaintext)));
const packed = new Uint8Array([...salt, ...iv, ...ct]); // salt(16) | iv(12) | ct+tag
return btoa(String.fromCharCode(...packed)); // self-contained Base64
} الميزات الرئيسية
تشفير مُصادَق عليه بـGCM افتراضيًا
ينتج GCM النص المشفّر إضافةً إلى وسم مصادقة بطول 128 بت، فيفشل فك التشفير بصوتٍ عالٍ إذا تغيّر بايت واحد. CBC وCTR على بُعد نقرة واحدة عندما تحتاج للتوافق معهما.
نص مشفّر ذاتي الاحتواء
يُدمِج وضع عبارة المرور الملح العشوائي وIV والوسم في سلسلة Base64 واحدة، فلا يحتاج من يفكّ التشفير سوى عبارة المرور — دون حقول منفصلة لنسخها أو لفقدانها.
عبارة مرور أو مفتاح خام
اكتب عبارة مرور (تُمدَّد بـPBKDF2-HMAC-SHA256، 600,000 تكرار) أو الصق مفتاحًا دقيقًا بطول 128/192/256 بت بترميز سداسي عشري أو Base64، مع شارة حيّة لعدد البايتات تؤكّد الطول.
إخراج متوافق مع OpenSSL
فعِّل وضع OpenSSL لإخراج صيغة Salted__ التي يقرؤها أمر openssl enc وCryptoJS، مع عرض أمر سطر الأوامر المكافئ حيًّا لتتمكّن من إعادة إنتاجه في الطرفية.
100% داخل متصفحك
يُشفَّر كل بايت محليًا عبر Web Crypto API. افتح تبويب «الشبكة» ولن ترى شيئًا يغادر الصفحة — بل يعمل حتى دون اتصال.
إخراج Base64 أو سداسي عشري
انسخ الناتج بأي ترميز يتوقّعه نظامك المستهدف، وافحص أطوال الملح وIV والنص المشفّر والوسم في شريط تفصيل المقاطع.
أمثلة تشفير AES
GCM + عبارة مرور (ذاتي الاحتواء وغير حتمي)
The quick brown fox jumps over the lazy dog.
الملح (16 بايت) + IV (12 بايت) + النص المشفّر + الوسم (16 بايت)، بترميز Base64 — قيمة جديدة في كل تشغيل
بالوضع GCM، وحجم مفتاح 256، ونوع مفتاح عبارة مرور، وعبارة المرور hunter2، تُشفَّر هذه الجملة إلى سلسلة واحدة ذاتية الاحتواء بترميز Base64. شفِّرها مرتين وستحصل على ناتجَين مختلفين تمامًا — وهذا مقصود. يُنشئ وضع عبارة المرور ملحًا جديدًا طوله 16 بايت وIV جديدًا طوله 12 بايت في كل عملية تشفير، فلا ينتج عن النص الصريح نفسه أبدًا نصٌّ مشفّر مطابق، ولا يستطيع مراقِبٌ معرفة أن رسالتين متطابقتان. يُظهر شريط المقاطع أسفل المُخرَج التخطيط الدقيق: الملح، ثم IV، ثم النص المشفّر مع وسم GCM المُلحَق بطول 128 بت. لفك التشفير، لا يحتاج المستلِم سوى عبارة المرور ونفس الوضع وحجم المفتاح — إذ يسافر الملح وIV والوسم جميعًا داخل السلسلة.
إخراج متوافق مع OpenSSL (CBC + عبارة مرور)
Attack at dawn!
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
فعِّل وضع التوافق مع OpenSSL بالوضع CBC، ونوع مفتاح عبارة مرور، وعبارة المرور correct-horse، ودالة اشتقاق المفتاح PBKDF2 بـ10,000 تكرار. عندئذٍ تُخرِج الأداة صيغة OpenSSL Salted__: نص Base64 يبدأ دائمًا بـU2FsdGVkX1، وهو ترميز Base64 لترويسة Salted__ ذات الثمانية بايتات. ولأن ملحًا عشوائيًا جديدًا بطول 8 بايتات يُولَّد في كل مرة، تتغيّر السلسلة الدقيقة في كل تشغيل، لكن كل واحدة منها تُفَكّ عبر سطر الأوامر بالأمر: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A — الذي يطبع Attack at dawn!. اختر EVP-MD5 بدل PBKDF2 لمطابقة CryptoJS أو OpenSSL 1.0.2 وما قبله. لاحظ أن أمر openssl enc لا يدعم GCM، لذا فوضع OpenSSL يقتصر على CBC فقط.
كيف تُشفِّر النص بـAES
- 1
اختر الوضع وحجم المفتاح
اترك الوضع على GCM (موصى به) وحجم المفتاح على 256 للحصول على أقوى افتراضي معقول. لا تبدِّل إلى CBC أو CTR إلا إذا تطلّب ذلك نظام تستهدفه.
- 2
اختر عبارة المرور أو المفتاح الخام
أبقِ نوع المفتاح على عبارة المرور وأدخل عبارة مرور قوية، أو بدِّل إلى مفتاح خام والصق مفتاحًا دقيقًا بطول 128/192/256 بت بترميز سداسي عشري أو Base64. تؤكّد شارة عدد البايتات ما إذا كان مفتاحك الخام بطول صحيح.
- 3
أدخل النص المراد تشفيره
اكتب أو الصق نصّك الصريح. يعمل التشفير تلقائيًا أثناء الكتابة، بالكامل داخل متصفحك — دون رحلة ذهاب وإياب عبر زر ودون رفع.
- 4
انسخ النص المشفّر ذاتي الاحتواء
ناتج Base64 على اليمين يحتوي بالفعل على الملح وIV ووسم المصادقة. استخدم شريط المقاطع لرؤية تخطيط البايتات، ثم اضغط «نسخ». بدِّل ترميز المُخرَج إلى سداسي عشري إذا كان النظام المستهدف يتوقّعه.
- 5
فكّ تشفيره لاحقًا عند الحاجة
أعطِ النص المشفّر وعبارة المرور ونفس الوضع وحجم المفتاح للمستلِم، أو افتح صفحة فك تشفير AES لعكس العملية بنفسك.
أخطاء شائعة في تشفير AES
الخلط بين عبارة المرور والمفتاح الخام
يجب أن يكون المفتاح الخام بالضبط 16 أو 24 أو 32 بايت من بيانات عشوائية (تُدخَل بترميز سداسي عشري أو Base64)؛ أما عبارة المرور فهي أي نص ويجب تمديدها بدالة اشتقاق مفتاح أولًا. اختيار مفتاح خام ولصق عبارة مرور بشرية إما يُخطئ بسبب الطول أو ينتج مفتاحًا ضعيفًا.
Key type: Raw key Key (hex): correct horse battery staple (not hex, not 32 bytes)
Key type: Passphrase Passphrase: correct horse battery staple (stretched with PBKDF2)
إعادة استخدام IV مع نفس المفتاح
يجب أن يكون IV فريدًا لكل رسالة تحت مفتاح معيّن. إعادة استخدامه قاتلة لـGCM (قد تُسرِّب مفتاح المصادقة) وتكسر السرّية في CBC وCTR. دَع الأداة تولّد IV عشوائيًا جديدًا في كل مرة.
// same key, same IV for two messages encrypt(key, iv, a); encrypt(key, iv, b);
// fresh random IV each time (the default) encrypt(key, randomIV(), a);
فقدان الملح أو IV أو الوسم
إذا نسخت بايتات النص المشفّر فقط وأسقطت الملح/IV المُلحَقين في البداية — أو وسم GCM المُلحَق في النهاية — فلن تُفكّ شيفرة البيانات أبدًا. احتفظ بالسلسلة ذاتية الاحتواء كاملةً، لا بمنتصفها فقط.
stored = ciphertext // salt + IV + tag thrown away
stored = salt + iv + ciphertext + tag // the full Base64 string
توقّع تطابق مُخرَج GCM في كل تشغيل
يستخدم GCM (ووضع عبارة المرور عمومًا) ملحًا وIV عشوائيَّين، فيُشفَّر النص نفسه إلى سلسلة Base64 مختلفة في كل مرة. هذه ميزة أمان، لا علّة — فهي تعني أن مُتنصِّتًا لا يستطيع معرفة أن نصّين مشفَّرين يُشفِّران نفس الرسالة.
assert(encrypt(msg) === encrypt(msg)) // fails — and should
assert(decrypt(encrypt(msg)) === msg) // this is what must hold
ماذا يمكنك أن تفعل بتشفير AES
- تعلّم كيف تتصرّف أوضاع AES
- بدِّل بين GCM وCBC وCTR بنفس المُدخَل لترى كيف تتغيّر المصادقة وطول IV وحجم النص المشفّر. طريقة عملية لفهم ما تُحدِّده NIST SP 800-38D فعليًا.
- أنتِج نصًّا مشفّرًا يستطيع نظام آخر قراءته
- ولِّد مُخرَجًا بصيغة OpenSSL Salted__ (أو كمفتاح خام مع IV) بحيث يستطيع خادم خلفي أو سكربت أو زميل يستخدم openssl أو مكتبة تعمية فك تشفيره دون عناء.
- شفِّر ملاحظة أو مقتطفًا قصيرًا
- احمِ قطعة نص شخصية عابرة — عبارة استرداد تنقلها بين أجهزتك، أو مقتطفًا في تذكرة دعم — بعبارة مرور لا يعرفها سواك. غير مخصّصة للأسرار الإنتاجية أو الخاضعة للتنظيم.
- صمِّم نموذج تشفير أوليًا
- حدِّد تخطيط الملح/IV/الوسم وإعدادات دالة اشتقاق المفتاح هنا قبل كتابة الكود، باستخدام تفصيل المقاطع لتأكيد ترتيب البايتات وأطوالها.
- ولِّد متّجهات اختبار
- أنشئ نصًّا مشفّرًا معروفًا بعبارة مرور ووضع ثابتين لتغذية اختبارات فك التشفير الخاصة بك، ثم تحقّق من دورة التشفير وفك التشفير الكاملة على صفحة فك تشفير AES.
أوضاع AES واشتقاق المفتاح
- GCM (وضع Galois/Counter) — مُصادَق عليه، وموصى به
- سرّية إضافةً إلى وسم مصادقة بطول 128 بت (NIST SP 800-38D). يستخدم IV بطول 96 بت (12 بايت)، مُولَّدًا عشوائيًا في كل تشفير، ويتوازى كلٌّ من التشفير وفك التشفير جيدًا. القاعدة الوحيدة التي يجب ألا تخرقها أبدًا: لا تُعِد استخدام IV مع نفس المفتاح أبدًا. يحدّ SP 800-38D مفتاحًا واحدًا بنحو 2^32 من قيم IV المولَّدة عشوائيًا، وتكرارها يُسرِّب حاصل XOR لنصّين صريحين وقد يكشف حتى مفتاح المصادقة الذي يحمي الوسم. الأفضل لكل شيء تقريبًا.
- CBC (تسلسل الكتل المشفّرة) — سرّية فقط
- تُخضَع كل كتلة لعملية XOR مع كتلة النص المشفّر السابقة، باستخدام IV عشوائي بطول 16 بايت. لا مصادقة مدمجة فيه، لذا يجب إقرانه بـMAC منفصل — تشفير ثم MAC، على سبيل المثال عبر مولّد HMAC لدينا — وهو عرضة تاريخيًا لهجمات أوراكل الحشو (Vaudenay, EUROCRYPT 2002). يُقدَّم هنا للتوافق البيني مع OpenSSL والأنظمة الأقدم.
- CTR (العدّاد) — سرّية فقط، أشبه بالانسيابي
- يحوِّل CTR خوارزمية AES إلى شفرة انسيابية بتشفير عدّاد، فيعمل مع أي طول بايتات دون حشو، وتتوازى الكتل بحرّية. مثل CBC، لا يوفّر أي سلامة بمفرده، وإعادة استخدام العدّاد/IV تحت مفتاح واحد كارثية. مفيد عندما تحتاج وصولًا عشوائيًا أو دلالات بثّ.
- ECB — غير مُتاح (بحكم التصميم)
- يُشفِّر ECB (دفتر الشيفرات الإلكتروني) كل كتلة بشكل مستقل، فتُنتج كتل النص الصريح المتطابقة كتل نص مشفّر متطابقة وتتسرّب الأنماط — «بطريق ECB» سيّئ الصيت. يتعمّد Web Crypto API عدم تنفيذه، ونحن كذلك. إذا تطلّب نظير قديم ECB، فاعتبر ذلك خللًا يجب إصلاحه لا صيغة يجب إعادة إنتاجها.
- اشتقاق المفتاح: 600,000 مقابل 10,000 مقابل تكرار واحد
- في وضع عبارة المرور الافتراضي تستخدم هذه الأداة PBKDF2-HMAC-SHA256 بـ600,000 تكرار (نفس تجزئة SHA-256 مُطبَّقة مئات آلاف المرّات) مع ملح بطول 16 بايت، وفق OWASP. في وضع التوافق مع OpenSSL، يفترض PBKDF2 10,000 تكرار فقط (افتراضي أمر openssl enc)، بينما تُجري دالة EVP_BytesToKey القديمة التي يستخدمها CryptoJS وOpenSSL القديم تمريرة MD5 واحدة فقط — أضعف بمراتب. كلما زادت التكرارات، بطُؤ التخمين بالقوة الغاشمة لكل محاولة، وهذا سبب ارتفاع الافتراضي الحديث كثيرًا. Argon2 وscrypt أقوى، لكنهما ليسا جزءًا من Web Crypto، لذا فهما خارج نطاق هذه الأداة؛ ولتخزين كلمات المرور، اتّبع OWASP وفضِّل Argon2id.
أفضل ممارسات تشفير AES
- فضِّل GCM ما لم يتطلّب نظير خلاف ذلك
- التشفير المُصادَق عليه يكشف العبث الذي يمرّ بصمت عبر CBC وCTR. لا تنزل إلى CBC أو CTR إلا للتوافق البيني، وأضِف MAC إن فعلت.
- استخدم IV عشوائيًا جديدًا لكل رسالة
- تفعل الأداة ذلك تلقائيًا. إذا تجاوزت IV يدويًا، فلا تُعِد استخدام واحد مع نفس المفتاح أبدًا — فتكراره كارثي في GCM، ويكسر السرّية الدلالية في CBC.
- اختر عبارات مرور قوية ومفاتيح عشوائية حقيقية
- يُبطئ PBKDF2 القوة الغاشمة لكنه لا يستطيع إنقاذ عبارة مرور ضعيفة. ولِّد عبارة مرور طويلة عبر مولّد كلمات المرور، أو مفتاحًا عشوائيًا حقيقيًا عبر مولّد مفتاح السر.
- احتفظ بالملح وIV والوسم مع النص المشفّر
- ليست سرّية، لكن فك التشفير يفشل بدونها. الصيغة ذاتية الاحتواء لهذه الأداة تجمعها معًا؛ وإذا استخدمت وضع المفتاح الخام بنص مشفّر عارٍ، انسخ IV بشكل منفصل واحفظه مع النص المشفّر.
- لا تُشفِّر أسرارًا إنتاجية أو خاضعة للتنظيم في أي أداة أونلاين
- حتى مع كون التشفير من جانب العميل بالكامل، فإن أداة المتصفح مخصّصة للتعلّم والتصحيح والحالات الشخصية العابرة. الأسرار الحقيقية تنتمي إلى نظام إدارة مفاتيح موثوق بمعالجة وتدوير مُدقَّقين. AES-256 نفسه قويّ — معتمد ضمن مجموعة NSA CNSA 2.0 للمعلومات حتى مستوى TOP SECRET — والكسور الواقعية تأتي من أخطاء التنفيذ، لا من الخوارزمية.
أسئلة شائعة عن تشفير AES
هل تشفير النص أونلاين آمن؟
هل يمكن فك تشفير AES بدون المفتاح؟
GCM مقابل CBC — أيّ وضع أستخدم؟
AES-128 مقابل AES-256 — هل يستحق 256 العناء؟
هل تُرفَع بياناتي عندما أشفِّر هنا؟
ما الفرق بين عبارة المرور والمفتاح؟
هل يمكنني التشفير بحيث يستطيع OpenSSL أو CryptoJS فك تشفيره؟
أدوات ذات صلة
عرض جميع الأدوات →فك تشفير AES — يدعم OpenSSL/CryptoJS
أدوات الأمن
فك تشفير AES أونلاين — GCM/CBC/CTR، عبارة مرور أو مفتاح خام، يكتشف تلقائيًا صيغة OpenSSL وCryptoJS "U2FsdGVkX1". يعمل 100% داخل المتصفح، والمفاتيح لا تغادر الصفحة أبدًا.
مولّد تجزئة bcrypt والتحقق منها
أدوات الأمن
ولّد تجزئات كلمات المرور بـ bcrypt وتحقق منها أونلاين — تكلفة قابلة للضبط، بادئات $2b$/$2a$/$2y$. 100% في متصفحك؛ كلمة مرورك لا تُرفع أبداً.
مولّد HMAC ومدقّق التوقيع
أدوات الأمن
مولّد ومدقّق HMAC مجاني أونلاين. احسب HMAC-SHA256/SHA1/SHA384/SHA512 بمفاتيح Text أو Hex أو Base64 وإخراج Hex/Base64/Base64URL. كل شيء داخل متصفحك — المفاتيح لا تغادر الصفحة.
محلّل JWT — فك ترميز الرموز
أدوات الأمن
فك ترميز رموز JWT أونلاين مع محلّل JWT المجاني. افحص الترويسة والحمولة والتوقيع وانتهاء الصلاحية والخوارزمية والمطالبات فوراً. 100% في المتصفح — رمزك لا يغادر جهازك. بلا تسجيل، بلا تتبّع.
مُنشئ وترميز JWT
أدوات الأمن
مولّد ومرمّز JWT مجاني أونلاين. ابنِ الترويسة والحمولة، ووقّع بـ HS256 أو RS256 أو ES256 فوراً. 100% في المتصفح — سرّك ومفتاحك لا يغادران جهازك.
مولّد مفتاح JWT السري — HS256/384/512
أدوات الأمن
ولّد مفتاحاً سرياً قوياً ومطابقاً للمواصفة لـ HS256/384/512 — 100% في متصفحك، لا يُرسل إلى خادم أبداً. base64url أو base64 أو hex؛ انسخه لملف .env.