Skip to content

أداة تشفير وفك تشفير DES / 3DES

تشفير وفك تشفير DES/3DES بوضعي ECB/CBC وحشو PKCS#7 في متصفحك. تحقّق صارم من طول المفتاح (8/16/24 بايت) بلا اقتطاع صامت، مع أمر OpenSSL مكافئ لكل نتيجة، ولا يُرفع أي شيء.

بدون تتبّع يعمل في المتصفّح مجاني
يتم التشفير بالكامل في متصفحك — المفتاح والبيانات التي تدخلها لا يغادران هذا الجهاز أبدًا.

النص المشفر
أمر OpenSSL المكافئ
—

الأمر يحتوي على المفتاح الذي أدخلته.

متجه اختبار DES من FIPS 81

يُحسب وقت البناء بنفس المحرك الذي تشغّله هذه الصفحة — قارن تنفيذ DES لديك به.
المفتاح (DES الأحادي) 0123456789abcdef
النص الصريح 4e6f772069732074
النص المشفر (ECB، بلا حشو) 3fa40e8a984d4815
يرسي محرك DES/3DES متجه FIPS 81 بتأكيدات اختبارية، وقد قورن بـ OpenSSL 3 (des-ede / des-ede3، مع التحقق من DES الأحادي عبر تكافؤ K‖K‖K) على أكثر من 3000 توليفة عشوائية بين ECB وCBC؛ ونُفّذت الأوامر المكافئة في صدفة حقيقية للمقارنة. وأُكّدت الافتراضيات للمكتبات بتشغيلها وقراءة الكود المصدري؛ انظر البدائل. — فريق الأمان Go Tools · Sep 28, 2026

كتبه وراجعه المطورون الذين يبنون أدوات التعمية. كل نص مشفر وعدد بايتات في هذه الصفحة يحسبه محرك الأداة ويؤكده الاختبار.

إجابات سريعة عن DES

طول مفتاح DES

8 / 16 / 24 بايت DES الأحادي: 8 بايت (56 بت فعالة). 3DES: 16 بايت (مفتاحان) أو 24 بايت (ثلاثة مفاتيح). المادة الاسمية للمفاتيح 112/168 بت، والقوة الأمنية الفعلية وفق NIST نحو 80/112 بت (SP 800-57). تكتشف هذه الأداة تلقائيًا من عدد البايتات؛ والأطوال الأخرى ترفض.

متجه اختبار FIPS 81

3fa40e8a984d4815 المفتاح 0123456789abcdef، والنص الصريح "Now is t" (سداسي عشري 4e6f772069732074): DES أحادي ECB بلا حشو يعطي 3fa40e8a984d4815.

كم طول قيمة IV في DES

8 بايت 8 بايت (16 رقمًا سداسيًا)، ولـ CBC فقط — ECB لا يستخدمها. تختلف عن IV بطول 16 بايت في AES.

ما هو PKCS5Padding في Java

= PKCS#7 لـ DES هو PKCS#7 — خوارزمية الحشو نفسها باسمها التاريخي (لم يعرّف PKCS#5 سوى كتل 8 بايت، وهي كتلة DES بالصدفة).

هل DES آمن اليوم

للتوافق القديم فقط لا. أُحيل DES الأحادي إلى التقاعد عام 2005؛ وجُعل 3DES مهجورًا في SP 800-131A Rev.2 (2023). للتوافق القديم فقط — استخدم AES-256 لكل جديد.

ما هما DES و3DES (Data Encryption Standard)؟

DES (Data Encryption Standard) هو الشيفرة الكتلية المتناظرة التي تبنّتها هيئة المعايير الأمريكية عام 1977، استنادًا إلى تصميم Lucifer من IBM . يعالج كتلًا من 64 بت (8 بايت) بمفتاح اسمي 64 بت منه 56 بت فعالة، عبر 16 جولة من بنية Feistel.

3DES (TDEA، Triple DES) يربط DES ثلاث مرات لتعويض المفتاح القصير: C = E_K3(D_K2(E_K1(P))). المرور الأوسط هو فك تشفير بحيث ينهار K1=K2=K3 إلى DES أحادي — وهو خيار توافق مقصود. وصيغة المفتاحين (K3=K1) تمنح نحو 112 بت فعالة وهي الأكثر شيوعًا في الأنظمة المصرفية القديمة.

سحب NIST الشيفرة DES الأحادية عام 2005 (إشعار FIPS 46-3) وجعل 3DES مهجورًا في SP 800-131A Rev.2 (2023). السبب الوحيد لبقائهما هو التوافق مع الأنظمة القديمة: فالمقاصات المصرفية وبوابات الدفع وأنظمة Java/.NET/PHP من التسعينيات والألفينات ما زالت تشغّل تشفيرًا من عصر DES. التصاميم الجديدة ينبغي أن تستخدم AES-256.

# OpenSSL single DES (legacy provider)
openssl enc -des-ecb -provider legacy -provider default -K 0123456789abcdef -nopad

# 3-key 3DES CBC + PKCS#7 (default provider)
openssl enc -des-ede3-cbc -K <48 hex digits> -iv <16 hex digits> -base64 -A

ما تفعله أداة DES هذه

تحقق صارم من أطوال المفاتيح الثلاثة

تُكتشف 8/16/24 بايت تلقائيًا كـ DES أحادي / 3DES بمفتاحين / بثلاثة مفاتيح؛ وأي شيء آخر يرفض خطأً. وعلى خلاف القطع الصامت في CryptoJS أو القطع مع تحذير في openssl enc -K، تفشل المفاتيح الخاطئة بصوت عالٍ — وهو السبب الأعلى لعدم توافق الاتصالات البينية.

متجه FIPS 81 يُحسب وقت البناء

يُشتق جدول متجهات الاختبار في الأسفل وقت البناء من نفس المحرك، فتقرأ زواحف البحث القيمة المرجعية دون تشغيل JS، ولا يمكن للرقم المطبوع أن يبتعد أبدًا عن التفاعلي.

أمر OpenSSL مكافئ

كل توليفة معاملات تقابل أمر openssl enc يعيد إنتاج النتيجة على OpenSSL 3، بما في ذلك أعلام legacy provider لـ DES الأحادي. أرسله إلى الطرف الآخر لتثبيت مكان الاختلاف في المعاملات.

دعم النص الصريح GBK

getBytes() في Java من عصر DES على JDK صيني لويندوز ينتج GBK. كلا الاتجاهين هنا يقبل GBK، فالنص الصيني من الأنظمة القديمة لا يحتاج تحويلًا مسبقًا.

بالكامل داخل المتصفح

TypeScript خالص، بلا أي اعتماديات، بلا أي طلبات شبكة. المفاتيح والنص الصريح لا يغادران الجهاز أبدًا؛ ويعمل دون اتصال بعد التحميل. هذا هو الشكل الوحيد المقبول لأداة تتعامل مع المفاتيح.

القيم الافتراضية لمكتبات DES عبر اللغات

Java (JCE)

"DES" افتراضيًا ECB + PKCS5Padding

Cipher.getInstance("DES") يساوي DES/ECB/PKCS5Padding؛ و"DESede" هي 3DES لكنها تقبل مفاتيح 24 بايت فقط — وسّع K1‖K2 إلى K1‖K2‖K1 بنفسك للمفتاحين. وPKCS5Padding هي PKCS#7 لـ DES. بدون قيمة IV: التشفير يختار قيمة عشوائية (استرجعها عبر getIV())، وفك التشفير يرمي "Parameters missing".

PHP (openssl_encrypt)

des-ede3-cbc / des-ede-cbc

أسماء الخوارزميات تتبع OpenSSL: des-ede3 هي ECB ثلاثية، وdes-ede3-cbc هي CBC. و$options=0 (الافتراضي) ينتج نصًا بترميز Base64؛ وOPENSSL_RAW_DATA للبايتات الخام. المفاتيح القصيرة تُكمل بأصفار صامتة؛ وقيمة IV الفارغة تحذّر ثم تشفّر بـ IV أصفار.

OpenSSL 3 (openssl enc)

-des-ede3-cbc تعمل افتراضيًا

DES الأحادي يحتاج -provider legacy -provider default (بعض الإصدارات تحذف legacy تمامًا). و-K/-iv تأخذ قيمًا سداسية؛ PKCS#7 افتراضيًا، و-nopad للتعطيل. و-K يقطع المفاتيح الطويلة جدًا مع تحذير.

CryptoJS

يقطع أطوال المفاتيح غير الصالحة صامتًا

المفتاح الخام 8 بايت (WordArray) يعمل؛ والأطوال الخاطئة تُكمل بأصفار أو تُقطع صامتًا (4 بايت تُكمل، 10 تُقطع — بلا خطأ). وسلسلة نصية بوصفها "مفتاحًا" تشغّل اشتقاق مفاتيح (MD5 + ملح عشوائي، مخرجات بادئتها Salted__، مختلفة في كل مرة). وCBC بلا قيمة IV يعني انهيارًا بخطأ TypeError، لا IV أصفار. وTripleDES بمفتاح 8 بايت يصبح صامتًا DES أحادي.

.NET

TripleDES افتراضيًا CBC + PKCS7

TripleDESCryptoServiceProvider: Mode=CBC، Padding=PKCS7، ومفتاح 16 أو 24 بايت (DES يقبل 8). يرفض .NET المفاتيح الضعيفة (تُطبَّع الباريتي أولًا ثم تُقارن بجدول المفاتيح الضعيفة — مفتاح أصفار يرمي استثناء) بينما تقبلها كل المكتبات الأخرى. انتبه لذلك عند الترحيل.

Go (crypto/des)

ربط الوضع بشكل صريح

تعطيك des.NewCipher واجهة الكتلة الخام بمفتاح 8 بايت؛ وتغلّفها بنفسك في cipher.NewCBCEncrypter ونحوها. و3DES هي des.NewTripleDESCipher (24 بايت). ويُفحص طول قيمة IV بأشد صرامة من معظم اللغات.

أمثلة تشفير DES

متجه اختبار FIPS 81 (DES أحادي، ECB، بلا حشو)

المفتاح 0123456789abcdef، النص الصريح (سداسي عشري) 4e6f772069732074
3fa40e8a984d4815

النص الصريح هو السلسلة النصية "Now is t" بالترميز ASCII. هذا هو متجه FIPS 81 المعروف، والجدول أسفل الصفحة يُحسب وقت البناء بنفس المحرك — إذا لم ينتج تنفيذ DES لديك هذه القيمة لهذه المدخلات، ففيه خلل.

3DES بمفتاحين + CBC + PKCS#7: من نص صريح UTF-8 إلى Base64

المفتاح 0123456789abcdeffedcba9876543210 (16 بايت)، قيمة IV fedcba9876543210، النص الصريح: DES interop test: order 20260927-0042
QmnMoewSecp7Z7cr/w3/4AjM9lpFo1swc4dfLNH5UkgCwU5n7WIdKA==

المفتاح بطول 16 بايت يُعامل كـ 3DES بمفتاحين (K1 = أول 8 بايت، K2 = آخر 8، K3 = K1 — تجميع EDE2). وحشو PKCS#7 على كتلة 8 بايت هو بالضبط ما يسميه Java "PKCS5Padding" لـ DES: نفس المخطط، والفرق فقط في حجم الكتلة.

3DES بثلاثة مفاتيح + CBC + PKCS#7

المفتاح 0123456789abcdef23456789abcdef010456789abcdef012 (24 بايت)، قيمة IV fedcba9876543210، النص الصريح: hello des
DhDQX9sfxKOirZ8eyqT7Jg==

المفتاح بطول 24 بايت هو التجميع الكامل بثلاثة مفاتيح EDE3: C = E_K3(D_K2(E_K1(P))). من بين أطوال المفاتيح الثلاثة، هذه هي الصيغة الوحيدة التي ليس لها مكافئ متدهور — كل من صيغة المفتاحين أو K1=K2=K3 ينهار إلى شيفرات أضعف.

كيفية استخدام أداة تشفير وفك تشفير DES هذه

  1. 1

    اختر الوضع والحشو

    لـ DES/ECB/PKCS5Padding في Java اختر ECB + PKCS#7؛ ولـ openssl enc -des-ede3-cbc اختر CBC + PKCS#7. كود mcrypt القديم في PHP يستخدم عادة حشو الأصفار.

  2. 2

    أدخل المفتاح (8/16/24 بايت)

    عدد البايتات يحدد الشيفرة: 8 = DES أحادي، 16 = 3DES بمفتاحين، 24 = 3DES بثلاثة مفاتيح. اختر Hex أو نصًا أو Base64؛ وتعرض الشارة عدد البايتات الحقيقي والصيغة المكتشفة. الأطوال الخاطئة ترفض فورًا — لا يُقطع شيء أبدًا.

  3. 3

    لـ CBC، أدخل قيمة IV بطول 8 بايت

    ECB لا يحتاج قيمة IV. ويجب أن تكون 8 بايت تمامًا — 16 رقمًا سداسيًا، لا 32 كما في AES. وينتج زر عشوائي قيمة جديدة.

  4. 4

    الصق واحصل على نتائج فورية

    التشفير: أدخل نصًا (UTF-8/GBK) أو سداسيًا عشريًا. فك التشفير: الصق نصًا مشفرًا بصيغة Base64 أو hex. تتحدث النتائج أثناء الكتابة، مع نسخ بنقرة واحدة وفحص ذهاب وإياب عبر زر «فك تشفير هذا النص المشفر».

  5. 5

    خذ الأمر المكافئ لـ OpenSSL إلى الطرف الآخر

    يعطي اللوحة القابلة للطي أمر openssl enc يعيد إنتاج النتيجة الحالية (المفتاح شامل؛ أوامر DES الأحادي تحمل -provider legacy -provider default). أرسله إلى من تتوافق معه — أسرع طريقة لتسوية معامل من منه الخاطئ.

لماذا يفشل فك تشفير DES

طول المفتاح ليس 8/16/24

«مفتاح DES» من 32 حرفًا سداسيًا هو 16 بايت — أي 3DES بمفتاحين، وليس DES أحادي. وبالعكس، تمرير مفتاح 24 بايت إلى نظام يقبل المفتاحين فقط يفشل أيضًا.

✗ خطأ
المفتاح 0123456789abcdeffedcba9876543210 (16 بايت) مع اختيار DES الأحادي → خطأ «يجب أن يكون المفتاح 8 بايت بالضبط»
✓ صحيح
المفتاح نفسه بوصفه 16 بايت (3DES بمفتاحين) → يُفك التشفير بنجاح

الالتباس بين الاسمين PKCS5 وPKCS7

يكتب Java "PKCS5Padding" لـ DES لكنه ينفذ خوارزمية PKCS#7 (لم يعرّف PKCS#5 الحشو إلا لكتل 8 بايت التي تطابق كتلة DES، فبقي الاسم). اختيار None أو Zero ضد نص مشفر من JCE يفشل دائمًا.

✗ خطأ
نص مشفر `DES/ECB/PKCS5Padding` من JCE فُك عنه التشفير بوضع "بلا حشو" → بيانات زائدة في النهاية أو خطأ حشو
✓ صحيح
اختر PKCS#7 (Java PKCS5Padding) → مخرجات نظيفة

نسخ طول IV الخاص بـ AES (16 بايت)

كتلة DES 8 بايت، فقيمة IV أيضًا 8 بايت. لصق قيمة IV من 32 رقمًا سداسيًا من كود AES يفشل في فحص الطول؛ وقيمة 8 أرقام سداسية تُكمل بأصفار وتُقرأ خطأ.

✗ خطأ
IV 00000000000000000000000000000000 (32 رقمًا سداسيًا) → خطأ «يجب أن تكون قيمة IV بطول 8 بايت»
✓ صحيح
IV 0000000000000000 (16 رقمًا سداسيًا) → مقبول

قيمة IV خاطئة في CBC: الكتلة الأولى 8 بايت فقط تظهر مشوشة

فك تشفير نص مشفر متعدد الكتل بقيمة IV خاطئة لا يظهر أي خطأ — الكتلة الأولى 8 بايت فقط تشوش، والباقي يُفك بنجاح (لا تصل قيمة IV إلا إلى الكتلة الأولى، وفحص الحشو في الكتلة الأخيرة). إذا رأيت «الأحرف الأولى مشوشة والباقي سليم»، افحص قيمة IV قبل المفتاح؛ أما النص المشفر بكتلة واحدة فيكسر الحشو ويعطي bad decrypt.

✗ خطأ
نص مشفر متعدد الكتل + قيمة IV خاطئة → أول 8 بايت مشوشة والباقي سليم — يُقرأ خطأً بأنه «مفتاح خاطئ»
✓ صحيح
غيّر قيمة IV فقط (المفتاح كما هو) → تستعيد الكتلة الأولى، فيتأكد أن IV هو المشكلة

openssl enc -K يقطع المفاتيح الطويلة صامتًا

يحتفظ -K بالبايتات التي يحتاجها فقط ويطبع تحذيرًا من سطر واحد تبتلعه السكربتات. عندما يقول الطرف الآخر "المفتاح هو هذه الـ 48 رقمًا سداسيًا" لكنه شفّر فعلًا بأول 16 منها، يفشل فك التشفير بالمفتاح الكامل.

✗ خطأ
في الطرفية: `-K` من 49 رقمًا سداسيًا → "hex string is too long, ignoring excess" يضيع في مخرجات الأنبوب
✓ صحيح
استخدم الأمر المكافئ في هذه الأداة لتوليد قيمة `-K` بالطول الصحيح، ثم قارن بايتات المفتاح مع الطرف الآخر

يفشل DES الأحادي على OpenSSL 3 بخطأ "unsupported"

المزوّد الافتراضي في OpenSSL 3 لا يتضمن des-ecb/des-cbc؛ وتشغيله مباشرة يرمي digital envelope routines::unsupported. أضف -provider legacy -provider default، أو استخدم des-ede3 مع K‖K‖K (أحادي DES جبريًا).

✗ خطأ
openssl enc -des-ecb -K … → خطأ: unsupported
✓ صحيح
openssl enc -des-ecb -provider legacy -provider default -K … (أو `des-ede3-ecb -K <K‖K‖K>`)

متى تحتاج إلى تشفير DES عبر الإنترنت

تصحيح تشفير الرسائل في الأنظمة القديمة
المقاصات المصرفية وحسابات MAC في بوابات POS وتشفير واجهات ERP القديمة ما زالت تعمل بـ DES/3DES. الصق الرسالة والمفتاح هنا للتأكد من «هل المفتاح صحيح، وأي وضع، وأي حشو» دون إقامة بيئة Java أو PHP.
ترحيل كود قديم من Java / PHP / .NET
قارن ناتج Cipher.getInstance("DES/ECB/PKCS5Padding") أو openssl_encrypt(..., 'des-ede3-cbc', ...) مع هذه الأداة بايتًا ببايت قبل التحول. تُكتشف صيغتا المفتاحين/الثلاثة من طول المفتاح، فلا شيء يحتاج تخمينًا.
تدقيقات أمنية وتدريس
توضيح تسرّب الأنماط في ECB (كتل صريحة متطابقة → كتل مشفرة متطابقة)، والتحقق من انهيار 3DES (K1=K2=K3 ينهار إلى DES أحادي)، والتحقق من متجه FIPS 81 — مادة معيارية في تقارير اختبار الاختراق ومقررات التعمية.
توليد نصوص مشفرة نموذجية للتوثيق
عندما تحتاج ويكي داخلية أو توثيق API إلى مثال قابل لإعادة الإنتاج، احسبه هنا بمفتاح وقيمة IV ثابتين — يستطيع القراء التحقق منه بأمر OpenSSL المكافئ، ولا تُلف بيانات إنتاجية في الأمثلة.

شرح DES / 3DES وأوضاع الشيفرة الكتلية

الكتلة والمفتاح
يعالج DES كتلًا من 64 بت عبر 16 جولة Feistel، بكل جولة مفتاح فرعي 48 بت مشتق من المفتاح الرئيسي 56 بت عبر تبديلات الضغط PC-1/PC-2 ودورات مجدولة. صناديق الاستبدال الثمانية هي المصدر الوحيد لاللاخطية؛ ومعايير تصميمها لم تُنشر قط بشكل كامل.
تجميع EDE في 3DES
C = E_K3(D_K2(E_K1(P))). فك التشفير في الوسط يجعل K1=K2=K3 ينهار إلى DES أحادي — وهو هدف توافق مع الإصدارات السابقة. وصيغة المفتاحين تملك 2×56=112 بت من المادة الاسمية للمفاتيح، لكن قوتها الأمنية الفعلية نحو 80 بت وفق NIST (SP 800-57 Part 1)؛ وصيغة المفاتيح الثلاثة اسميتها 168 بت وقوتها الفعلية 112 بت (مُهملة).
ECB وCBC
يشفّر ECB الكتل باستقلال — الكتل الصريحة المتطابقة تنتج كتلًا مشفرة متطابقة، وهو تسرّب نمط ظاهر تجعله كتل 8 بايت أسوأ من AES-ECB. ويخلط CBC الكتلة المشفرة السابقة (قيمة IV للأولى) في النص الصريح قبل التشفير، وكان الخيار السائد في المصارف بزمن DES. كلا الوضعين ينتج نصًا مشفرًا بمضاعفات 8 بايت.
الحشو: PKCS#7 / Zero / None
يضيف PKCS#7 عددًا n من البايتات بقيمة n لما ينقص (ينقص 3 → 03 03 03) ويحشو الكتلة الممتلئة بكتلة إضافية كاملة — وهذا هو "PKCS5Padding" في Java لـ DES. حشو الأصفار يملأ بـ 0x00 وهو مُفقِد للمعلومات إذا كان النص الصريح ينتهي فعلًا بـ 0x00. وNone يتطلب مضاعفة 8 تمامًا.
legacy provider في OpenSSL 3
نقل OpenSSL 3 تشفير DES الأحادي إلى legacy provider معطّل افتراضيًا: تحتاج واجهة الأوامر إلى -provider legacy -provider default، وبعض الإصدارات (بما فيها OpenSSL المضمّن مع Node) تحذفه تمامًا. أما 3DES (des-ede/des-ede3) فيبقى في المزوّد الافتراضي. محرك هذه الأداة من TypeScript الخالص لا يتأثر.

استخدام DES بشكل صحيح (توافق الأنظمة القديمة)

لا تستخدم DES لأنظمة جديدة بأي صيغة
بتات DES الأحادي الـ 56 قابلة للكسر بالقوة الغاشمة؛ والكتلة 64 بت تحمل حد Sweet32 لعيد الميلاد (CVE-2016-2183)، ويحدد NIST سقف حزمة المفتاح الواحدة بنحو 8 MB (2²⁰ كتلة) من النص الصريح؛ والمفتاحان Disallowed، والتشفير بثلاثة مفاتيح بعد 2023. استخدم AES-256 لكل جديد. وجود هذه الأداة لقراءة الأنظمة القديمة وترحيلها بأمان.
في التوافق مع الأنظمة القديمة، التطابق بايتًا ببايت أولًا
عند التعامل مع نظام قديم، أعد إنتاج النص المشفر بمعاملات القديم هنا بايتًا ببايت أولًا، ثم عدّل الكود. أكّد طول المفتاح والوضع والحشو ومصدر IV (ثابت أم عشوائي، في الترويسة أم خارج القناة) قبل تغيير الخوارزمية.
لا تُعِد استخدام قيم IV، حتى في الأنظمة القديمة
إعادة استخدام IV الخاص بـ CBC بالمفتاح نفسه تكشف العلاقة بين الكتل الأولى لنصّين صريحين. إذا فرض بروتوكول قديم قيمة IV ثابتة، سجّلها كعيب في قائمة الترحيل — ولا ترثها كعادة.
أبقِ المفاتيح خارج الكود المصدري
أنظمة عصر DES تضمّن المفاتيح كنص صريح في الكود أو الإعدادات كعادة. عند تدقيق أحدها، ضع «كيف يُخزَّن المفتاح» بجوار «أي خوارزمية» في التقرير — في معظم الاختراقات كان الأول هو الثغرة الفعلية.

أسئلة شائعة حول تشفير وفك تشفير DES

يفشل فك تشفير DES برسالة "bad decrypt" أو خطأ حشو — ماذا أفحص؟
يتطلب فك التشفير تطابق كل معامل مع الطرف الذي شفّر: بايتات المفتاح، وطول المفتاح (8/16/24)، والوضع (ECB/CBC)، وقيمة IV، والحشو، وهل النص المشفر بصيغة hex أم Base64. الفخّان الأكثر شيوعًا: عدم تطابق طول المفتاح («مفتاح DES» من 32 حرفًا سداسيًا هو 16 بايت — أي 3DES بمفتاحين، وليس DES أحادي) والالتباس في اسم الحشو (PKCS5Padding في Java هو فعليًا PKCS#7 لـ DES — لا تختر None). اللوحة القابلة للطي في اليمين تعرض أمر OpenSSL مكافئًا للإعدادات الحالية؛ وإرساله إلى الطرف الآخر أسرع طريقة لمعرفة مكان الاختلاف.
كم طول مفتاح DES؟ و3DES؟
DES الأحادي: 64 بت اسمية (8 بايت، منها 56 بت فعالة — بت واحد في كل بايت بت باريتي). و3DES يأتي بصيغتين: مفتاحان (16 بايت، K1‖K2 حيث K3=K1) وثلاثة مفاتيح (24 بايت، K1‖K2‖K3). المادة الاسمية للمفاتيح 112/168 بت، لكن القوة الأمنية الفعلية وفق NIST (SP 800-57 Part 1 Rev.5، الجدول 2) هي نحو 80 و112 بت فقط — بل إن صيغة المفاتيح الثلاثة أُهملت أيضًا. تكتشف هذه الأداة الصيغة من عدد البايتات؛ وأي شيء غير 8/16/24 يرفض خطأً — بينما يقطع CryptoJS وopenssl enc -K صامتًا أو يكمل بأصفار، وهو السبب الأول لفشل التوافق البيني.
ما هي قيمة IV وكم طولها في DES؟
قيمة IV هي قيمة 8 بايت يخلطها CBC في الكتلة الأولى؛ وECB لا يستخدمها. ويجب أن تكون 8 بايت تمامًا (16 رقمًا سداسيًا أو 8 أحرف ASCII). لاحظ أن IV في DES طوله 8 بايت بينما في AES 16 — نسخ طول IV من AES يفشل فورًا. ولا تُعِد استخدام قيمة IV بالمفتاح نفسه أبدًا.
إلى ماذا يقابل DES/ECB/PKCS5Padding في Java في هذه الأداة؟
وضع ECB + حشو PKCS#7. في JCE، ينفّذ "PKCS5Padding" لـ DES خوارزمية PKCS#7 العامة — فقد عرّف PKCS#5 الحشو لكتل 8 بايت فقط، وهي كتلة DES بالصدفة. وناتج Cipher.getInstance("DES/ECB/PKCS5Padding") في Java يُفك تشفيره هنا بـ ECB + PKCS#7 ومفتاح DES أحادي بطول 8 بايت. ⚠️ 3DES في Java (DESede) لا يقبل سوى مفاتيح 24 بايت — ولصيغة المفتاحين عليك توسيع K1‖K2 إلى K1‖K2‖K1 بنفسك.
كيف تقابل أسماء الخوارزميات des-ede3 في PHP؟
يستعير PHP أسماء OpenSSL: des-ede3-cbc هي 3DES بثلاثة مفاتيح + CBC، وdes-ede3-ecb هي ثلاثة مفاتيح + ECB؛ وdes-ede-cbc هي صيغة المفتاحين. مفتاح 24 بايت يحدد ثلاثة مفاتيح، و16 بايت يحدد مفتاحين.
ما هي بتات الباريتي في مفتاح DES؟ وهل تُفحص؟
البُت الأدنى في كل بايت من المفتاح معرّف كبت باريتي، فالمفتاح الحقيقي 56 بت يجلس داخل 64 بت. لا يطلب FIPS 46-3 فحصها — OpenSSL وJava وهذه الأداة كلها تتجاهلها؛ وأي 8 بايت تعمل، وتغيير بتات الباريتي لا يغيّر النص المشفر. و.NET هو الاستثناء: يطبّع الباريتي أولًا ثم يفحص جدول المفاتيح الضعيفة، فتُرفض المفاتيح الأصفار والمفاتيح الضعيفة الأخرى في .NET بينما تشفّرها كل المكتبات الأخرى بلا مشكلة — فخّ لا ينطلق إلا عند ترحيل مفاتيح اختبار من Java/OpenSSL إلى .NET.
ماذا يحدث في 3DES عندما K1 = K2؟
في 3DES بمفتاحين، تساوي K3 قيمة K1 دائمًا؛ وإذا كان K1 = K2 أيضًا، انهارت سلسلة EDE كلها إلى DES أحادي: E_K(D_K(E_K(P))) = E_K(P). ويحدث نفس الشيء عندما تكون مكونات 8 بايت الثلاثة لمفتاح 24 بايت متطابقة. لا تزال هذه الأداة تشفّر (التوافق أولًا)، لكن القوة الحقيقية تصبح DES أحادي بـ 56 بت، لا 3DES.
هل ما زال DES آمنًا؟
لا — ليس إلا للتوافق مع الأنظمة القديمة. سحب NIST الشيفرة DES الأحادية في 2005-05-19 (المفاتيح 56 بت قابلة للكسر بالقوة الغاشمة؛ وقد نجح Deep Crack من EFF في 56 ساعة عام 1998، وفي 22 ساعة في العام التالي مع distributed.net). ويسرد SP 800-131A Rev.2 تشفير TDEA بمفتاحين ضمن Disallowed، والتشفير بثلاثة مفاتيح ضمن Disallowed بعد 2023-12-31 (يبقى فك التشفير "Legacy use" لقراءة البيانات التاريخية فقط)؛ وسُحب SP 800-67 نفسه في 2024-01-01. وتحمل الكتلة الصغيرة 64 بت حد عيد الميلاد من فئة Sweet32 (CVE-2016-2183) — يحدد NIST سقف حزمة المفتاح الواحدة بـ 2²⁰ كتلة (نحو 8 MB) من النص الصريح. استخدم AES-256 لأي شيء جديد. وجود هذه الأداة سببه أن المقاصات المصرفية وبوابات الدفع وأنظمة Java/.NET القديمة ما زالت تشغّل رسائل من عصر DES — وإصلاحها يبدأ من القدرة على قراءتها.
لماذا تختلف نتيجة 3DES لدي عن Java/PHP؟
افحص بترتيب نسبة الاحتمال: ① طول المفتاح — «مفتاح DES من 32 رقمًا سداسيًا» لدى الطرف الآخر هو 16 بايت (3DES بمفتاحين)، وأنت فككت التشفير بوصفه DES أحادي؛ ② الوضع — "DES" المجردة في Java افتراضيها ECB، الأسماء بلا لاحقة وضع في OpenSSL مثل des-ede3 وdes-ede هي ECB (والاسم البديل لـ CBC هو -des3)؛ وopenssl_encrypt في PHP تتطلب كتابة اسم الخوارزمية صراحةً — والمربك أنها تُخرج افتراضيًا نصًا بترميز Base64 لا بايتات خامًا؛ ③ الحشو — كان mcrypt القديم في PHP يستخدم حشو الأصفار غالبًا، بينما تستخدم JCE حشو PKCS#5/PKCS#7؛ ④ الترميز — hex أم Base64، وحالة الأحرف؛ ⑤ فخ كلمة السر في CryptoJS — تمرير سلسلة نصية بوصفها "مفتاحًا" يشغّل اشتقاق المفاتيح (MD5 + ملح عشوائي، ومخرجات بادئتها Salted__، مختلفة في كل مرة)، وهو باتفاق ليس المفتاح الخام أصلًا — السبب الأول لـ «الكود نفسه ونتيجة مختلفة كل تشغيل». تتيح لك هذه الأداة تبديل كل بند؛ ويمكن إرسال أمر OpenSSL المكافئ في اليمين إلى الطرف الآخر لإعادة الإنتاج.
ECB أم CBC — أيهما أستخدم؟
ما يتطلبه النظام الذي تخاطبه — فالتوافق القديم لا يملك صوتًا. وإذا كان بإمكانك الاختيار، فدائمًا CBC بقيمة IV عشوائية: يشفّر ECB الكتل الصريحة المتطابقة إلى كتل مشفرة متطابقة، وتجعل الكتل الصغيرة 8 بايت في DES تسرّب الأنماط أوضح منه في AES-ECB. بروتوكولات المصارف بزمن DES تستخدم كليهما؛ افحص وثيقة البروتوكول أولًا.
هل يعمل هذا دون اتصال؟ هل تُرفع بياناتي؟
كل الحساب يحدث في متصفحك (TypeScript خالص، بلا اعتماديات، بلا طلبات شبكة)؛ المفاتيح والنص الصريح لا يغادران الجهاز أبدًا. وبعد تحميل الصفحة يمكنك قطع الاتصال والاستمرار في العمل. هذا هو الشكل الوحيد المقبول لأداة تتعامل مع المفاتيح.
مفتاحان أم ثلاثة مفاتيح في 3DES — أيهما أكثر شيوعًا في الأنظمة القديمة؟
المفتاحان (16 بايت) أكثر شيوعًا: نشرت المصارف وصناعة الدفع عتادًا بمفاتيح 16 بايت لأسباب التوافق، وأبقى SP 800-67 له تاريخ إهمال منفصلًا (أسبق). لذا فـ «مفتاح 3DES» من 32 رقمًا سداسيًا هو على الأرجح صيغة المفتاحين. تكتشف هذه الأداة الصيغة من عدد البايتات تلقائيًا.

أدوات ذات صلة

عرض جميع الأدوات →

فك تشفير AES — يدعم OpenSSL/CryptoJS

أدوات الأمن

فك تشفير AES أونلاين — GCM/CBC/CTR، عبارة مرور أو مفتاح خام، يكتشف تلقائيًا صيغة OpenSSL وCryptoJS "U2FsdGVkX1". يعمل 100% داخل المتصفح، والمفاتيح لا تغادر الصفحة أبدًا.

أداة تشفير AES — GCM/CBC/CTR

أدوات الأمن

أداة تشفير AES مجانية أونلاين — AES-128/192/256، GCM/CBC/CTR، عبارة مرور (PBKDF2) أو مفتاح خام. تعمل 100% داخل متصفحك؛ لا شيء يُرفع.

مولّد تجزئة bcrypt والتحقق منها

أدوات الأمن

ولّد تجزئات كلمات المرور بـ bcrypt وتحقق منها أونلاين — تكلفة قابلة للضبط، بادئات $2b$/$2a$/$2y$. 100% في متصفحك؛ كلمة مرورك لا تُرفع أبداً.

حاسبة المجموع الاختباري CRC

أدوات الأمن

الصق بيانات ست عشرية أو نصاً واحصل على 63 متغيّراً من CRC-8 وCRC-16 وCRC-32 دفعة واحدة. لديك قيمة تحقق لا تستطيع مطابقتها؟ اكتبها لتسمّي الأداة المتغيّر — MODBUS وCCITT-FALSE وXMODEM وKERMIT. يعمل كلياً داخل متصفحك.

مولّد HMAC ومدقّق التوقيع

أدوات الأمن

مولّد ومدقّق HMAC مجاني أونلاين. احسب HMAC-SHA256/SHA1/SHA384/SHA512 بمفاتيح Text أو Hex أو Base64 وإخراج Hex/Base64/Base64URL. كل شيء داخل متصفحك — المفاتيح لا تغادر الصفحة.

محلّل JWT — فك ترميز الرموز

أدوات الأمن

فك ترميز رموز JWT أونلاين مع محلّل JWT المجاني. افحص الترويسة والحمولة والتوقيع وانتهاء الصلاحية والخوارزمية والمطالبات فوراً. 100% في المتصفح — رمزك لا يغادر جهازك. بلا تسجيل، بلا تتبّع.