فك تشفير AES — يدعم OpenSSL/CryptoJS
فك تشفير AES أونلاين — GCM/CBC/CTR، عبارة مرور أو مفتاح خام، يكتشف تلقائيًا صيغة OpenSSL وCryptoJS "U2FsdGVkX1". يعمل 100% داخل المتصفح، والمفاتيح لا تغادر الصفحة أبدًا.
خيارات متقدّمة
لا تُعِد استخدام IV مع نفس المفتاح أبدًا. اترك الحقل فارغًا لتوليد IV عشوائي آمن.
كيف يعمل فك تشفير AES
فك تشفير AES هو المعكوس الدقيق للتشفير: نفس المفتاح المتماثل الذي شوَّش البيانات يُشغِّل جولات الخوارزمية بالعكس لاستعادة البايتات الأصلية. ولأن AES متماثل، لا يوجد «مفتاح فك تشفير» منفصل — يجب أن تقدِّم نفس المفتاح أو عبارة المرور، والوضع، وIV التي استُخدمت في التشفير تمامًا. اضبط المعاملات بشكل صحيح ويعود النص الصريح مطابقًا بايتًا ببايت؛ وأخطئ في واحد منها وستحصل على خطأ أو بيانات عشوائية.
لفك التشفير بنجاح، يجب أن تتطابق أربعة أشياء بالضبط مع التشفير: المفتاح (أو عبارة المرور مع إعدادات اشتقاق مفتاحها)، ووضع التشغيل (GCM أو CBC أو CTR)، وIV أو nonce، وبالنسبة لـGCM، وسم المصادقة. أخطئ في أيٍّ منها وستحصل إما على خطأ صريح (فشل مصادقة GCM، فشل حشو CBC) أو بيانات عشوائية صامتة (CTR، أو CBC بـIV خاطئ). تقرأ هذه الأداة الملح وIV والوسم من النص المشفّر نيابةً عنك عندما تكون مُدمَجة فيه، وتُشخِّص الفشل عندما لا يتطابق شيء ما.
تصل النصوص المشفّرة بأشكال مختلفة قليلة، وتفهم هذه الأداة ثلاثة منها. الصيغة 1 هي تخطيط عبارة المرور ذاتي الاحتواء لدينا: ملح بطول 16 بايت، ثم IV، ثم النص المشفّر (مع وسم GCM مُلحَقًا في وضع GCM) — يُفَكّ بعبارة المرور فقط. الصيغة 2 هي تخطيط المفتاح الخام: IV مُلحَق ببداية النص المشفّر، أو نص مشفّر «عارٍ» تُقدِّم فيه IV بشكل منفصل. الصيغة 3 هي تخطيط OpenSSL، الذي ينتجه أمر openssl enc وCryptoJS.
يستحق تخطيط OpenSSL هذا أن تتعرّف عليه بالنظر. يبدأ بثمانية بايتات ASCII هي Salted__، يتبعها ملح بطول 8 بايتات ثم النص المشفّر، وعندما يُرمَّز كل ذلك بـBase64 تظهر تلك البايتات الأولى دائمًا كبادئة U2FsdGVkX1. لذا إذا بدأ نص مشفّر سُلِّم إليك بـU2FsdGVkX1، فمن شبه المؤكّد أنه أُنتِج بأمر openssl enc أو باستدعاء CryptoJS AES.encrypt(text, passphrase). يشتق CryptoJS مفتاحه بدالة EVP_BytesToKey القديمة باستخدام تمريرة MD5 واحدة، بينما يستخدم openssl الحديث PBKDF2 — وهذا سبب كون اختيار دالة اشتقاق المفتاح الصحيحة هو كل ما يهمّ عند فك تشفير هذه النصوص. إذا كان مُدخَلك بترميز Base64 وتريد فقط رؤية البايتات الخام، فسيُظهرها مفكِّك Base64 لدينا. لإنشاء نص مشفّر بهذه الصيغ، استخدم أداة تشفير AES.
// AES-256-GCM decrypt 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 aesGcmDecrypt(base64, passphrase) {
const enc = new TextEncoder();
const packed = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
const salt = packed.slice(0, 16), iv = packed.slice(16, 28); // salt(16) | iv(12)
const ct = packed.slice(28); // ciphertext + tag
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, ['decrypt']);
const plain = await crypto.subtle.decrypt(
{ name: 'AES-GCM', iv }, key, ct); // throws if the tag fails
return new TextDecoder().decode(plain); // recovered plaintext
} الميزات الرئيسية
يكتشف تلقائيًا مُخرَج OpenSSL وCryptoJS
الصق نصًّا مشفّرًا يبدأ بـU2FsdGVkX1 وتتعرّف الأداة على صيغة Salted__ وتعرض تبديلًا بنقرة واحدة إلى تدفّق فك التشفير المطابق، فلا تصارع أبدًا خطأً بلا مخرج.
ثلاث دوال اشتقاق مفتاح
فكّ التشفير عبر كل أجيال صيغة openssl enc: PBKDF2 بعدد تكرارات مخصّص، أو EVP_BytesToKey بـSHA-256، أو تمريرة MD5 القديمة الوحيدة التي يستخدمها CryptoJS.
يشرح سبب فشل فك التشفير
بدلًا من خطأ عام، تحصل على تشخيص: مفتاح خاطئ مقابل IV خاطئ، فشل مصادقة GCM، خطأ حشو CBC، تلوّث Base64، أو «هذا يبدو كنص من عصر MD5، جرِّب EVP-MD5».
أمر openssl المكافئ يُعرَض حيًّا
شاهد أمر openssl enc -d الدقيق الذي يُعيد إنتاج فك التشفير على سطر الأوامر، بعدد التكرارات وكل شيء، لتتحقّق من النتيجة خارج المتصفح.
عبارة مرور أو مفتاح خام، GCM/CBC/CTR
يتعامل مع نص مشفّر ذاتي الاحتواء بعبارة مرور، ونص مشفّر بمفتاح خام مع IV مُلحَق أو مُقدَّم بشكل منفصل، وجميع أوضاع Web Crypto الثلاثة.
100% داخل متصفحك
تُعالَج النصوص المشفّرة والمفاتيح محليًا عبر Web Crypto API ولا تُرفَع أبدًا — يمكنك التحقّق عبر تبويب «الشبكة» أو بالانتقال دون اتصال.
أمثلة فك تشفير AES
فك تشفير نص مشفّر ذاتي الاحتواء بعبارة مرور (GCM)
الملح(16) ‖ IV(12) ‖ النص المشفّر ‖ الوسم(16)، بترميز Base64 — من صفحة التشفير
The quick brown fox jumps over the lazy dog.
هذا هو عكس مثال GCM في صفحة التشفير. خذ سلسلة Base64 ذاتية الاحتواء التي أنتجتها لعبارة المرور hunter2، والصقها هنا بالوضع GCM، وحجم مفتاح 256، ونوع مفتاح عبارة مرور، ونفس عبارة المرور hunter2، فتعود الجملة الأصلية. لا تُدخِل الملح أو IV بشكل منفصل — تقرأ الأداة الملح بطول 16 بايت وIV بطول 12 بايت من مقدّمة السلسلة، وتشتق المفتاح بـPBKDF2-HMAC-SHA256 (600,000 تكرار)، وتتحقّق من وسم GCM المُلحَق بطول 128 بت قبل إعادة أي نص. اضغط «تحميل مثال» في صفحة التشفير لتوليد سلسلة جديدة، ثم فكّ تشفيرها هنا.
فك تشفير مُخرَج OpenSSL/PBKDF2 حقيقي
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attack at dawn!
هذا مُخرَج حقيقي من أمر openssl enc. الصقه، وبدِّل إلى وضع OpenSSL (الوضع CBC، نوع المفتاح عبارة مرور)، وأدخل عبارة المرور correct-horse، واختر دالة اشتقاق المفتاح PBKDF2، واضبط التكرارات على 10,000 — فيكون النص الصريح Attack at dawn!. أخبرت بادئة U2FsdGVkX1 الأداةَ بأن هذه صيغة Salted__، والملح بطول 8 بايتات يقع مباشرةً بعد تلك الترويسة داخل Base64. يمكنك إعادة إنتاج فك التشفير بالضبط على سطر الأوامر: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A. إذا فشل نص مشفّر مشابه مع PBKDF2، فمن المرجّح أنه صُنِع بـCryptoJS — بدِّل دالة الاشتقاق إلى EVP-MD5 وحاول مجددًا. اضغط «تحميل مثال OpenSSL» لملء هذه القيم تلقائيًا.
كيف تفكّ تشفير نص AES مشفّر
- 1
الصق النص المشفّر
أسقِط نصّك المشفّر بترميز Base64 أو سداسي عشري في حقل الإدخال. إذا كان يبدأ بـU2FsdGVkX1، تُعلِّمه الأداة كصيغة OpenSSL/CryptoJS وتعرض تبديلك إلى الوضع الصحيح.
- 2
اضبط الصيغة والوضع
بالنسبة لسلسلة ذاتية الاحتواء من هذه الأداة، أبقِ وضع عبارة المرور وGCM/CBC/CTR المطابق. لمُخرَج OpenSSL/CryptoJS، اقبل التبديل (CBC + عبارة مرور). لبيانات المفتاح الخام، اختر مفتاح خام والترميز، وقدِّم IV إذا لم يكن مُلحَقًا.
- 3
اختر دالة اشتقاق المفتاح
في وضع OpenSSL، اختر PBKDF2 (وعدد تكراراته)، أو EVP-SHA256، أو EVP-MD5 لمطابقة كيفية اشتقاق المفتاح. EVP-MD5 هي التي يستخدمها CryptoJS.
- 4
أدخل عبارة المرور أو المفتاح
اكتب عبارة المرور الدقيقة، أو الصق المفتاح الخام الدقيق بترميز سداسي عشري أو Base64. يظهر النص الصريح على اليمين بمجرّد تطابق كل شيء.
- 5
اقرأ التشخيص إذا فشل
إذا حدث خطأ في فك التشفير، تُسمّي اللوحة السبب المرجّح — IV خاطئ، مفتاح خاطئ، خطأ حشو، تلوّث Base64، أو عدم تطابق دالة اشتقاق المفتاح — بحيث تستطيع تعديل إعداد واحد في كل مرة بدلًا من التخمين.
لماذا يفشل فك تشفير AES — وكيف تُصلِحه
فشل مصادقة GCM
يرفض GCM إعادة النص الصريح إذا لم يتحقّق الوسم. السبب هو عبارة مرور أو مفتاح خاطئ، أو الوضع الخاطئ، أو IV خاطئ، أو نص مشفّر مُعدَّل أو مبتور — لا يستطيع GCM تحديد أيّها. أعِد فحص كل واحد مقابل كيفية تشفير البيانات.
mode: CBC // but the data was encrypted with GCM => Authentication failed
mode: GCM, same passphrase and key size as encryption => plaintext
CBC: كتلة أولى مشوَّشة تعني IV خاطئًا
في CBC، لا يؤثّر IV إلا على الكتلة الأولى بطول 16 بايت. إذا كانت الكتلة الأولى عشوائية والباقي يُفكّ بوضوح، فـIV لديك خاطئ؛ وإذا كان كل شيء عشوائيًا، فالمفتاح خاطئ.
iv: 00000000000000000000000000000000 (wrong IV) => first block corrupt, rest readable
iv: (the exact IV used to encrypt) => Attack at dawn!
خطأ حشو CBC / PKCS#7
خطأ الحشو يعني غالبًا أن المفتاح خاطئ؛ وقد يعني أيضًا أن النص المشفّر تالف أو مبتور أو لم يكن محشوًّا بـPKCS#7. تأكّد من نسخ النص المشفّر كاملًا وأن عبارة المرور ودالة الاشتقاق متطابقتان.
passphrase: hunter3 // one character off => padding error
passphrase: hunter2 // exact => plaintext
تلوّث Base64 (أو السداسي العشري)
الأسطر الجديدة أو المسافات أو علامات الاقتباس الذكية المنسوخة مع النص المشفّر تُفسِد فكّ الترميز. تُزيل الأداة المسافات تلقائيًا، لكن الأحرف المفقودة أو الزائدة لا تزال تُفشِل العملية.
“U2FsdGVkX1...” (curly quotes and trailing junk copied in)
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ= (clean Base64)
اكتُشِفت U2FsdGVkX1 لكن وضع OpenSSL مُطفَأ
إذا كان مُدخَلك يبدأ بـU2FsdGVkX1، فأنت أمام مُخرَج OpenSSL/CryptoJS Salted__، الذي لن يُفَكّ كسلسلة عبارة مرور عادية. تعرض الأداة شريطًا؛ اضغط «التبديل إلى وضع OpenSSL» واختر دالة الاشتقاق.
OpenSSL compatible: off input: U2FsdGVkX1... => cannot parse
OpenSSL compatible: on, KDF chosen => plaintext
عدم تطابق دالة اشتقاق المفتاح (فخّ CryptoJS)
نص مشفّر يفشل مع PBKDF2 أو SHA-256 لكنه يُفَكّ بـEVP-MD5 أُنتِج بـCryptoJS أو openssl 1.0.2 وما قبله. على سطر الأوامر يحتاج ذلك إلى -md md5.
KDF: PBKDF2 // CryptoJS ciphertext => padding error
KDF: EVP-MD5 // matches CryptoJS => plaintext
ماذا يمكنك أن تفعل بفك تشفير AES
- فكّ تشفير مُخرَج openssl enc
- اقرأ كتلة Salted__ التي ينتجها openssl enc -aes-256-cbc دون النزول إلى طرفية: الصق Base64، وأدخل عبارة المرور، واختر دالة اشتقاق المفتاح، واحصل على نصّك الصريح.
- فكّ تشفير نص CryptoJS مشفّر
- استعِد بيانات من تطبيق قديم استخدم CryptoJS AES.encrypt(text, passphrase). اختر EVP-MD5 لمطابقة اشتقاق مفتاحه بتمريرة MD5 واحدة — الخطوة التي يُغفلها معظم الناس.
- صحِّح فك تشفير يستمرّ بالفشل
- عندما لا يستطيع كودك فك تشفير شيء ما، الصقه هنا لعزل ما إذا كانت المشكلة في المفتاح أو IV أو الوضع أو الترميز أو دالة اشتقاق المفتاح، باستخدام لوحة التشخيص.
- تحقّق من دورة تشفير كاملة
- تأكّد من أن النص المشفّر من صفحة تشفير AES أو من تطبيقك يُفَكّ عائدًا إلى البايتات الأصلية بالضبط.
- افهم نصًّا مشفّرًا مجهولًا
- حدِّد صيغة من شكلها — بادئة U2FsdGVkX1، أو بادئة ثابتة الطول تبدو كـIV — وتعرّف على كيفية إنتاجه قبل تجربة مفتاح.
آليات وصيغ فك تشفير AES
- فك تشفير GCM — مُصادَق عليه
- يُعيد GCM حساب الوسم بطول 128 بت فوق النص المشفّر ويقارنه قبل إعادة أي نص صريح؛ وعدم التطابق يُلقي خطأً بدلًا من تسريب بيانات تالفة. يستخدم IV بطول 96 بت المُلحَق في البداية. فشل GCM يعني أن المفتاح أو الوضع أو IV أو النص المشفّر خاطئ — لا تستطيع الخوارزمية إخبارك أيّهما، بل فقط أن المصادقة فشلت.
- فك تشفير CBC — راقب الكتلة الأولى والحشو
- لدى CBC بصمتا فشل مميّزتان. إذا كانت الكتلة الأولى فقط بطول 16 بايت مشوَّشة والباقي يبدو صحيحًا، فكان IV خاطئًا. إذا كانت كل الكتل عشوائية، فالمفتاح خاطئ. خطأ حشو PKCS#7 يعني عادةً أن المفتاح خاطئ، أو أن النص المشفّر تالف أو مبتور. لا يملك CBC وسمًا (على عكس بنية مُصادَق عليها مثل HMAC)، لذا قد يفكّ مفتاح خاطئ إلى بايتات تبدو معقولة.
- فك تشفير CTR — صامت عند الخطأ
- لا يُلقي CTR خطأً أبدًا: مفتاح خاطئ يُنتِج ببساطة بيانات عشوائية، تظهر عادةً كخطأ «ليس UTF-8 صالحًا» بمجرّد فكّ البايتات إلى نص. طابِق العدّاد/IV بالضبط. ولأنه لا يوجد فحص سلامة، تعامَل بحذرٍ مع أي مُخرَج CTR لم تُصادِق عليه بشكل منفصل.
- تخطيطات النص المشفّر (F1 / F2 / F3)
- الصيغة 1 (عبارة مرور) هي ملح(16) ثم IV ثم النص المشفّر، مع وسم GCM بطول 16 بايت مُلحَق في وضع GCM. الصيغة 2 (مفتاح خام) هي IV ثم النص المشفّر، أو نص مشفّر عارٍ مع IV مُقدَّم بشكل منفصل. الصيغة 3 (OpenSSL) هي ترويسة ASCII Salted__ ثم ملح بطول 8 بايتات ثم النص المشفّر. معرفة أيّ تخطيط لديك تُخبر الأداة أين يقع الملح وIV، والمفتاح الخام نفسه يجب أن يأتي من مولّد أرقام عشوائي مشفَّر — راجع مولّد مفتاح السر.
- اشتقاق المفتاح: مطابقة ما شفَّر البيانات
- بالنسبة لنص مشفّر ذاتي الاحتواء بعبارة مرور، تستخدم هذه الأداة PBKDF2-HMAC-SHA256 بـ600,000 تكرار. بالنسبة لنص OpenSSL/CryptoJS المشفّر، يجب أن تختار دالة الاشتقاق التي استُخدمت: PBKDF2 (افتراضي openssl -pbkdf2 هو 10,000 تكرار — اضبط عددك الدقيق)، أو EVP_BytesToKey بـSHA-256 (لـopenssl 1.1+ بدون -pbkdf2)، أو EVP_BytesToKey بـMD5 وتمريرة واحدة (CryptoJS وopenssl 1.0.2 وما قبله). الخطأ الكلاسيكي «لن يُفكّ» هو تجربة نص CryptoJS أو openssl القديم بـSHA-256 — بدِّل إلى EVP-MD5 وسيعمل.
أفضل ممارسات فك تشفير AES
- ابدأ بتحديد الصيغة
- قبل لمس الإعدادات، انظر إلى النص المشفّر. بادئة U2FsdGVkX1 تعني OpenSSL/CryptoJS؛ وسلسلة ذاتية الاحتواء من هذه الأداة هي صيغة عبارة مرور؛ وكتلة عارية تحتاج عادةً مفتاحًا خامًا وIV منفصلًا.
- طابِق دالة اشتقاق المفتاح بالضبط
- بالنسبة لنص OpenSSL/CryptoJS المشفّر، دالة الاشتقاق لا تقلّ أهمية عن عبارة المرور. إذا فشل PBKDF2، جرِّب EVP-MD5 (CryptoJS، وopenssl القديم)؛ ويجب أن يتطابق عدد التكرارات أيضًا، لا الخوارزمية فقط.
- الصق النص المشفّر بشكل نظيف
- أسطر جديدة أو مسافات شاردة من النسخ قد تُفسِد Base64. تُزيل هذه الأداة المسافات تلقائيًا، لكن إذا استمرّ فشل فك الترميز، تحقّق من علامات اقتباس ذكية، أو أحرف مفقودة، أو نسخ مبتور. يمكن لأداة Base64 لدينا مساعدتك في فحص سلسلة مشكوك فيها.
- تعامَل مع نتيجة المفتاح الخاطئ بصدق
- مع CTR أو CBC قد ينتج مفتاح خاطئ بايتات بدلًا من خطأ. إذا بدا المُخرَج عشوائيًا أو فشل فحص UTF-8، فالمفتاح أو IV خاطئ — لا تثق بمُخرَج يبدو جزئيًا صحيحًا.
- لا تُرسِل أبدًا نصًّا مشفّرًا سرّيًا أو مفاتيح إلى خادم
- الهدف من فك التشفير في المتصفح هو ألا يغادر أي شيء الصفحة. تجنّب الأدوات التي تُرفِع البيانات؛ تستخدم هذه الأداة Web Crypto محليًا، ويمكنك التحقّق عبر تبويب «الشبكة» أو بالانتقال دون اتصال. AES-256 قويّ — معتمد ضمن CNSA 2.0 لمستوى TOP SECRET — فإذا تعذّر عليك فك التشفير، فالمشكلة في المعاملات، لا في الخوارزمية.
أسئلة شائعة عن فك تشفير AES
هل يمكن فك تشفير AES بدون المفتاح؟
كيف أفكّ تشفير مُخرَج openssl enc؟
ماذا تعني U2FsdGVkX1 في بداية نص مشفّر؟
كيف أفكّ تشفير نص CryptoJS المشفّر؟
GCM مقابل CBC — لماذا يُفكّ نصّي المشفّر بطريقة ولا يُفكّ بالأخرى؟
هل يُرفَع نصّي المشفّر أو مفتاحي عند فك التشفير هنا؟
ما الفرق بين عبارة المرور والمفتاح الخام عند فك التشفير؟
أدوات ذات صلة
عرض جميع الأدوات →أداة تشفير AES — GCM/CBC/CTR
أدوات الأمن
أداة تشفير AES مجانية أونلاين — AES-128/192/256، GCM/CBC/CTR، عبارة مرور (PBKDF2) أو مفتاح خام. تعمل 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.